사용자 역할에 기능을 추가하는 방법?


14

Wordpress 네트워크를 관리하고 있으며 미리 정의 된 Admin 사용자 역할에 unfiltered_html 사용자 기능을 추가하고 싶습니다. Wordpress의 표준 설치에서는 관리자 계정에 이미이 기능이 있지만 MU 설치에서는 Super Admins 만이 기능을 사용할 수 있습니다. 워드 프레스 역할 및 기능 .

테마 또는 플러그인 내에서 관리자 역할을 어떻게 보강 할 수 있습니까?


1
wordpress.org/extend/plugins/unfiltered-mu 가 도움이 될 것 같습니다. 그러나 관리자와 편집자에게는 효과적입니다. 원하지 않는 경우 코드를 약간 조정할 수 있습니까?
Rev. Voodoo


@신부님. 부두 제안 해 주셔서 감사합니다. 이 unfiltered_html는 관리자 또는 최고 관리자 게시물 퍼가기를 할 수있는 기능 이외의 역할을 허용하는 것만으로는 충분하지 않습니다의 핵심은 / 취소 필터링이었다 등의 기능을 추가 워드 프레스 'KSES 후킹 같은 주제에 도움이 되거 도움 : kses_remove_filters를 ()
Jonnybojangles

세부 블로그 : goo.gl/xNuafH
Suresh Kamrushi

답변:


14

WP_Role 클래스 를 사용할 수 있습니다 .

// get the the role object
$role_object = get_role( $role_name );

// add $cap capability to this role object
$role_object->add_cap( $capability_name );

// remove $cap capability from this role object
$role_object->remove_cap( $capability_name );

따라서 관리자가 게시물 내용에 SCRIPT 및 IFRAME 태그를 입력 할 수있게하는 방법에 대한 원래의 질문을 해결하기 위해 멀티 사이트에서 최고 관리자에게만 부여되는 'unfiltered_html'기능을 찾고 있습니다.

// get the the role object
$admin_role = get_role( 'administrator' );
// grant the unfiltered_html capability
$admin_role->add_cap( 'unfiltered_html', true );

또는 함수에서 한 번만 실행할 수 있습니다.

/* Roles & Capabilities */
add_role('professional', 'Professional User', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    //'edit_published_posts' => true,
    //'publish_posts' => true,
    //'edit_files' => true,
    'upload_files' => true //last in array needs no comma!
));

고마워 필립. WP_Role 클래스와 관련하여 언제 코드를 실행해야합니까? 이것이 전역 역할 객체에 영향을 미치는 것 같아요? 함수 파일에서 한 번만 실행할 수 있다고 언급 한 두 번째 코드 블록을 가져 와서 기쁩니다. 일부 Wordpress 지원 포럼에서 비슷한 솔루션을 찾았지만 테마 또는 플러그인에서 한 번 코드를 실행하는 것이 이상하다고 생각합니다. 특히 변경 사항이 이미 있는지 확인하지 않은 경우. 아마도 역할 쓰기는 실제로 무시할 수 있습니다. 기능을 확인하려면 첫 번째 예에서와 같이 역할에 기능을 작성하십시오.
Jonnybojangles

또한 우리에게 언제든지 알려 주시면 WP_Role 클래스를 어떻게 실행할지에 관심이 있습니다. 감사합니다
Osu

1
@Jonnybojagles & @Osu, 이것을 확인하십시오 : 역할 및 기능에 대한
Philip

나는 이미 내 기사를 읽었지만 그 기사를 다시 살펴볼 기회를 얻었습니다. 감사합니다! 결국, 필터링되지 않은 mu (Voodoo Rev에 의해 언급 됨) 플러그인을 해부 한 후 결국에는 기능을 추가하여 역할을 변경하는 것만으로는 충분하지 않다는 것을 알았습니다. Wordpress의 KSES 필터를 필터링 해제해야했습니다.
Jonnybojangles

배열의 마지막 요소에 쉼표를 추가하는 것을 선호합니다. 코드가 작동하지 않거나 오류가 발생할 필요가 없기 때문에 관련이 없어 보일 수 있지만 수정을 시각화 할 때 버전 제어를 사용할 때 편리합니다. 이전 행 항목이 삭제되고 다시 추가되고 해당 행에 대한 추가 또는 변경으로 쉼표 만 사용하여 새 항목으로 강조 표시되지 않습니다. 비록 작지만 수정 사항을 분석 할 때 많은 시간을 절약 할 수 있습니다.
nyedidikeke

2

Super Admin 또는 Admin 이외의 다른 역할 (Wordpress 설치가 네트워크 / MU 인스턴스인지 여부에 따라 다름)이 필터링되지 않은 html을 게시물 또는 댓글에 추가하려면 Wordpress의 KSES 필터를 제거해야합니다.

사용자에게 특정 기능이 있는지 확인하십시오.

if ( current_user_can( 'unfiltered_html' ) ) {  }

그렇다면 KSES를 제거하십시오.

kses_remove_filters();

이 기능은 이미 필터링되지 않은 mu로 래핑되어 관리자와 편집자가 필터링되지 않은 html을 추가 할 수 있습니다.


이 기능은 또한 플러그인 레지스터에 래핑되고 등록 취소되므로 로직이 각 WP 인스턴스에서 수행 될 필요가 없습니다.
Jonnybojangles
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.