플러그인없이 사용자 역할 이름을 바꾸는 방법이 있습니까?


26

어쨌든 플러그인을 사용하는 대신 후크를 통해 사용자 역할 이름을 바꿀 수 있습니까?

편집하다

예를 들어 administrator»owner


달성하고자하는 것에 대해 자세히 설명해 주시겠습니까?
BjornW

사용자 역할 이름을 바꾸면됩니다. 예를 들어, 관리자-> 소유자
Sean Lee

답변:


44
function change_role_name() {
    global $wp_roles;

    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    //You can list all currently available roles like this...
    //$roles = $wp_roles->get_names();
    //print_r($roles);

    //You can replace "administrator" with any other role "editor", "author", "contributor" or "subscriber"...
    $wp_roles->roles['administrator']['name'] = 'Owner';
    $wp_roles->role_names['administrator'] = 'Owner';           
}
add_action('init', 'change_role_name');

http://www.garyc40.com/2010/04/ultimate-guide-to-roles-and-capabilities/


나는 이것을 작동시킬 수 없었다. 내가 무엇을하든 백엔드 생성 과정에서 여전히 '구독자'라고합니다. $wp_roles이제 [role_objects]배열의 일부를 가지고있는 것 같습니다 .
Zeth

이것은 매우 이상한 일을했습니다. 첫 번째 편지에만 영향을 미쳤습니다 ( "Odministrator")!
마크

3

간단한 해결책은을 사용하여 사용자 역할을 추가하는 add_role것입니다. 이렇게하면 원하는 이름을 지정하고 원하는 기능을 추가 할 수 있습니다. http://codex.wordpress.org/Function_Reference/add_role


이것을 피하려고 노력했지만 플러그인없이 가장 깨끗한 방법이라고 생각합니다.
Sean Lee

2

실제로는 여러 가지 방법으로이를 달성 할 수 있습니다.

함께 순수 PHP와 MySQL 당신은 DB에 직렬화 된 항목을 편집 할 수 있습니다. 실제로 Wordpress는 일련의 역할 배열을 wp_options테이블에 저장 합니다.

그래서:

  1. 직렬화 된 배열을 가져옵니다.
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. 문자열을 직렬화 해제합니다 – PHP : $rolesArray = unserialize($serialized_string)
  3. 역할 이름을 변경하십시오 – php : $rolesArray['role_key']['name'] = "New name"
  4. 배열을 다시 직렬화 – php : echo serialize($rolesArray)
  5. db option_value내용을 이전 지점의 출력으로 바꿉니다.

Wordpress에 대해 확신이 있다면 wp-cli에 포함 된 Wordpress REPLget_option('wp_user_roles') 을 사용 하여 저장된 값을 가져 와서 update_option업데이트 할 수 있습니다.

그리고 (항상) 옵션 조작 전에 db를 백업해야합니다.)


그렇지 않으면 role_key 값에 신경 쓰지 않으면…

wp-cli로이 를 달성하는 것은 매우 쉽습니다 .

  1. 기존 역할을 복제합니다 – $ wp role create new_role 'New Role' --clone=old_role
  2. 오래된 것을 삭제하십시오 – $ wp role delete old_role
  3. 그런 다음 new_role을 사용자와 연결하십시오.
  4. old_role = new_role까지 결국 1 단계와 2 단계를 반복하십시오.


0

DB에서 직접 편집 할 수 있으며 웹 사이트에 맞게 영구적으로 편집됩니다. WP가 사용자 역할을 유지하는 위치는 다음과 같습니다.

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.