Làm cách nào để tôi lập trình đặt vai trò mặc định cho người dùng mới?


9

Tôi muốn người dùng mới của blog có vai trò tùy chỉnh, thay vào đó là Người đăng ký. Làm thế nào để tôi thiết lập chương trình này? Tôi biết rằng nó có thể được thay đổi từ phụ trợ.

Câu trả lời:


13

Điều này cho phép các plugin dễ dàng chiếm quyền điều khiển vai trò mặc định trong khi chúng đang hoạt động.

// Hijack the option, the role will follow!
add_filter('pre_option_default_role', function($default_role){
    // You can also add conditional tags here and return whatever
    return 'subscriber'; // This is changed
    return $default_role; // This allows default
});

Tôi sử dụng nó để đảm bảo một số plugin cần vai trò của người đăng ký nhận được nó bất kể Quản trị viên cố gắng thay đổi :)

Trân trọng .


8

Khi một người dùng mới được tạo thông qua wp_insert_user()chức năng, vai trò được đặt theo set_role()phương thức của Userlớp và được đặt thành vai trò người dùng mặc định.

Vai trò người dùng mặc định được truy xuất từ ​​cơ sở dữ liệu get_option('default_role')và có thể được đặt qua Bảng điều khiển quản trị bằng cách đi tới Cài đặt> Chung> Vai trò mặc định của người dùng mới.

Nếu bạn đã đăng ký vai trò mới của mình (sử dụng add_role(), nó sẽ có sẵn ở đó để lựa chọn.

Ngoài ra, để kiểm soát nhiều hơn, bạn có thể móc vào user_registerhoặc profile_updatehành động để sau đó set_roledựa vào chúng một cách có điều kiện, hoặc tùy ý khác.


1
Tôi sẽ đánh dấu câu trả lời của bạn là chính xác, mặc dù câu trả lời thực tế hóa ra đơn giản như update_option ('default_role', 'custom_role_name') khi kích hoạt plugin.
jayarjo

Vui mừng khi được giúp đỡ.
soulseekah

4

Sau khi bạn tạo người dùng bằng

$user_id = wp_create_user( $user_login, $pas1, $user_email );

Tạo đối tượng người dùng

$user = new WP_User($user_id);

Sau đó thiết lập vai trò

$user->set_role('editor');

Bạn có thể thay thế vai trò 'biên tập viên' bằng bất kỳ điều nào sau đây:

  • Người quản lý

  • Biên tập viên

  • Tác giả

  • Cộng tác viên

  • Người đăng kí


1

Đặt nó vào Pluging hoặc tests.php của chủ đề của bạn

//Make 'Client' a default role

update_option('default_role','client');

2
Tại sao?? Nó không phục vụ mục đích để đặt mã của bạn ở đâu đó mà không biết nó làm gì hoặc hoạt động như thế nào
Pieter Goosen

Đó không phải là giải pháp tốt. Điều này sẽ chạy truy vấn cập nhật nếu không đưa vào hành động đặc biệt cho mỗi yêu cầu.
Maciej Paprocki
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.