Bagaimana cara saya menetapkan peran default untuk pengguna baru secara terprogram?

10

Saya ingin pengguna baru blog memiliki peran khusus, daripada Pelanggan. Bagaimana cara mengatur ini secara terprogram? Saya tahu itu bisa diubah dari backend.

jayarjo
sumber

Jawaban:

13

Ini memungkinkan plugin untuk dengan mudah membajak peran default saat sedang aktif.

// 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
});

Saya menggunakannya untuk memastikan beberapa plugin yang membutuhkan peran pelanggan mendapatkannya terlepas dari upaya Administrator untuk mengubah :)

Salam .

EarnestoDev
sumber
8

Ketika pengguna baru dibuat melalui wp_insert_user()fungsi, peran diatur dengan set_role()metode Userkelas dan diatur ke peran pengguna default.

Peran pengguna default diambil dari database get_option('default_role')dan dapat diatur melalui Dasbor Admin dengan masuk ke Pengaturan> Umum> Peran Default Pengguna Baru.

Jika Anda telah mendaftarkan peran baru Anda (menggunakan add_role(), itu harus tersedia di sana untuk dipilih.

Atau, untuk kontrol lebih lanjut, Anda dapat memasukkan ke dalam user_registeratau profile_updatetindakan untuk kemudian set_rolepada mereka secara kondisional, atau apa pun yang Anda suka.

soulseekah
sumber
1
Saya akan menandai jawaban Anda sebagai benar, meskipun jawaban sebenarnya ternyata sesederhana update_option ('default_role', 'custom_role_name') setelah aktivasi plugin.
jayarjo
Senang bisa membantu.
soulseekah
4

Setelah Anda membuat pengguna menggunakan

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

Buat objek pengguna

$user = new WP_User($user_id);

Kemudian atur peran

$user->set_role('editor');

Anda dapat mengganti peran 'editor' dengan salah satu dari yang berikut:

  • Administrator

  • Editor

  • Penulis

  • Penyumbang

  • Pelanggan

Delphi Electronice
sumber
1

Masukkan ke dalam Pluging atau functions.php dari tema Anda

//Make 'Client' a default role

update_option('default_role','client');
pengguna80490
sumber
2
Mengapa?? Tidak ada gunanya menempatkan kode Anda di suatu tempat tanpa mengetahui apa yang dilakukannya atau bagaimana cara kerjanya
Pieter Goosen
Itu bukan solusi yang baik. Ini akan menjalankan permintaan pembaruan jika tidak melakukan tindakan khusus pada setiap permintaan.
Maciej Paprocki