Cum setez programatic rolul implicit pentru utilizatorii noi?

22 oct. 2011, 11:22:15
Vizualizări: 34.6K
Voturi: 15

Aș dori ca noii utilizatori ai blogului să aibă un rol personalizat, în loc de Subscriber (Abonat). Cum pot seta acest lucru programatic? Știu că poate fi modificat din backend.

0
Toate răspunsurile la întrebare 4
0
18

Aceasta permite pluginurilor să preia ușor rolul implicit atunci când sunt active.

// Preia opțiunea, rolul va urma!
add_filter('pre_option_default_role', function($default_role){
    // Poți adăuga și condiții aici și să returnezi orice
    return 'subscriber'; // Acesta este modificat
    return $default_role; // Aceasta permite implicit
});

Eu îl folosesc pentru a mă asigura că unele pluginuri care necesită roluri de subscriber le primesc indiferent de încercările Administratorului de a schimba :)

Cu stimă.

22 oct. 2011 15:48:39
2

Când un nou utilizator este creat prin funcția wp_insert_user(), rolul este setat cu metoda set_role() a clasei User și este setat la rolul implicit al utilizatorului.

Rolul implicit al utilizatorului este preluat din baza de date get_option('default_role') și poate fi setat prin Panoul de Administrare mergând la Setări > General > Rol implicit pentru utilizatori noi.

Dacă ai înregistrat un rol nou (folosind add_role()), acesta ar trebui să fie disponibil acolo pentru a fi selectat.

Alternativ, pentru mai mult control, poți folosi hook-urile user_register sau profile_update pentru a seta rolul condiționat sau în orice alt mod preferi.

22 oct. 2011 11:34:52
Comentarii

Am să marchez răspunsul tău ca fiind corect, deși răspunsul real s-a dovedit a fi la fel de simplu ca update_option('default_role', 'custom_role_name') la activarea pluginului.

jayarjo jayarjo
22 oct. 2011 12:05:31

Mă bucur că am putut ajuta.

soulseekah soulseekah
22 oct. 2011 12:09:53
1

După ce ai creat utilizatorul folosind

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

Crează obiectul utilizator

$user = new WP_User($user_id);

Apoi setează rolul

$user->set_role('editor');

Poți înlocui rolul 'editor' cu oricare dintre următoarele:

  • Administrator

  • Editor

  • Autor

  • Contribuitor

  • Abonat

22 oct. 2011 11:27:25
Comentarii

asigură-te că rolul este scris cu litere mici, autor, editor, administrator, contributor, abonat

Tamik Soziev Tamik Soziev
20 ian. 2021 05:17:35
2

Puneți acest cod în fișierul functions.php al temei sau într-un plugin

//Setează rolul implicit ca 'client'

update_option('default_role','client');
16 sept. 2015 22:41:48
Comentarii

De ce?? Nu are niciun rost să pui codul undeva fără să știi ce face sau cum funcționează

Pieter Goosen Pieter Goosen
16 sept. 2015 22:58:14

Aceasta nu este o soluție bună. Acest lucru va rula interogarea de actualizare dacă nu este pus într-o acțiune specială la fiecare cerere.

Maciej Paprocki Maciej Paprocki
2 apr. 2018 22:33:59