Có cách nào để đổi tên tên người dùng mà không cần plugin không?


26

Có cách nào để đổi tên một tên vai trò người dùng thông qua hook, thay vì sử dụng plugin không?

Chỉnh sửa

Ví dụ: administrator»owner


Bạn có thể giải thích những gì bạn muốn đạt được?
BjornW

đổi tên vai trò người dùng, đó là nó. ví dụ: quản trị viên -> chủ sở hữu
Sean Lee

Câu trả lời:


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/


Tôi không thể làm điều này để làm việc. Bất kể tôi làm gì, thì nó vẫn được gọi là 'Người đăng ký' trong quá trình tạo phụ trợ. Có vẻ như $wp_rolesbây giờ có một [role_objects]phần của mảng.
Zeth

Điều này đã làm một cái gì đó rất lạ. Nó chỉ ảnh hưởng đến chữ cái đầu tiên ("Quản trị viên")!
Đánh dấu

3

Một giải pháp đơn giản là chỉ cần thêm vai trò người dùng bằng cách sử dụng add_role, theo cách đó bạn có thể đặt tên cho nó bất cứ điều gì bạn muốn và thêm bất kỳ khả năng nào bạn muốn. http://codex.wordpress.org/Function_Reference/add_role


Đã cố gắng để tránh điều này, nhưng tôi đoán đó là cách sạch nhất để làm mà không cần plugin.
Sean Lee

2

Trên thực tế, có nhiều cách để đạt được điều đó:

Với php và mysql thuần túy, bạn có thể chỉnh sửa mục được tuần tự hóa trong db. Thật vậy, Wordpress lưu trữ các mảng vai trò nối tiếp trong wp_optionsbảng.

Vì thế:

  1. Lấy mảng được tuần tự hóa:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Hủy kích hoạt chuỗi - php: $rolesArray = unserialize($serialized_string)
  3. Thay đổi tên vai trò - php: $rolesArray['role_key']['name'] = "New name"
  4. Nối tiếp mảng trở lại - php: echo serialize($rolesArray)
  5. Thay thế option_valuenội dung db bằng đầu ra từ điểm trước

Nếu bạn cảm thấy tự tin với Wordpress, bạn thậm chí có thể sử dụng REPL Wordpress được nhúng trong wp-cli để tìm nạp giá trị được lưu trữ get_option('wp_user_roles')và sau đó sử dụng update_optionđể cập nhật nó.

Và (luôn luôn) nhớ sao lưu db trước khi thao tác tùy chọn;)


Mặt khác, nếu bạn không quan tâm đến vai trò giá trị

Thật dễ dàng để đạt được điều đó với wp-cli :

  1. nhân đôi vai trò hiện có - $ wp role create new_role 'New Role' --clone=old_role
  2. xóa cái cũ - $ wp role delete old_role
  3. sau đó liên kết new_role với (các) người dùng.
  4. cuối cùng lặp lại bước 1 và 2 cho đến old_role = new_role

1

Bạn có thể tạo một tập tin nội địa hóa tùy chỉnh. Lấy tệp này: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot và chỉnh sửa bằng công cụ PoEdit (ví dụ). Trong bước tiếp theo, lưu tệp bản địa hóa dưới dạng en_GB.mo (hoặc loại khác) và chỉnh sửa tệp wp-config:

định nghĩa ("WPLANG", "en_GB");


1
Đã thử phương pháp này, nhưng một số menu kéo xuống không được dịch.
Sean Lee

0

Bạn có thể chỉnh sửa nó trực tiếp trong DB của mình và nó sẽ được chỉnh sửa vĩnh viễn cho trang web của bạn. Đây là nơi WP giữ vai trò người dùng

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.