Ottenere un elenco dei ruoli attualmente disponibile su un sito WordPress?
-
16-10-2019 - |
Domanda
Quando si scrive WordPress plugin v'è spesso la necessità di impostare le opzioni per i quali i ruoli sul sito hanno accesso a determinate funzionalità o il contenuto. Per fare questo ha bisogno di un plugin dev per andare a prendere l'elenco dei ruoli che esistono sul sito per uso nell'opzione. Perché ruoli personalizzati possono essere creati non possiamo assumere i ruoli predefiniti sono gli unici disponibili.
Qual è il modo migliore per andare a prendere l'elenco?
Soluzione
I ruoli vengono memorizzati nella $wp_roles
variabile globale.
La funzione ideale è get_editable_roles()
da /wp-admin/includes/user.php
function get_editable_roles() {
global $wp_roles;
$all_roles = $wp_roles->roles;
$editable_roles = apply_filters('editable_roles', $all_roles);
return $editable_roles;
}
"modificabile" parte è perché offre altri plugin la possibilità di filtrare l'elenco in caso qualcuno diverso da amministratore ha il privilegio 'edit_users'
(e quindi le esigenze 'admin' di essere rimosso dalla lista, altra cosa che l'utente potrebbe rendersi admin). plugins del ruolo di gestione utilizzati per creare ruoli personalizzati sono quelli che avrebbero usato quel filtro. Altrimenti questa funzione è essenzialmente get_roles()
(che non esiste) .
Presumibilmente il plugin sarà solo offre la pagina delle impostazioni in questione a qualcuno che dispone di funzionalità a livello di amministrazione come 'manage_options'
ed è fondamentalmente un amministratore con accesso a tutti i ruoli, in modo che il filtro non si dovrebbe influire.
C'è anche wp_dropdown_roles()
che vi dà i ruoli come <option>
campi per un elenco <select>
(anche se le caselle di controllo sono in grado di lavorare meglio in molti scenari in cui si sta scegliendo chi ha accesso a qualcosa) .
Altri suggerimenti
Prova questo:
function get_role_names() {
global $wp_roles;
if ( ! isset( $wp_roles ) )
$wp_roles = new WP_Roles();
return $wp_roles->get_names();
}
PS eh, perse che la spiegazione e la risposta, troppo veloce di me:)
Ecco come si può trovare l'elenco dei ruoli senza alcun plugin o funzione http://screencast.com/t/uaWsGLAR3Sh
Per coloro che hanno sito multilingua, funzione
function wp_roles_array() {
$editable_roles = get_editable_roles();
foreach ($editable_roles as $role => $details) {
$sub['role'] = esc_attr($role);
$sub['name'] = translate_user_role($details['name']);
$roles[] = $sub;
}
return $roles;
}
Restituisce Array localizzato come questo (i nomi dei ruoli sono in lingua slovacca):
Array
(
[0] => Array
(
[role] => administrator
[name] => Administrátor
)
[1] => Array
(
[role] => editor
[name] => Editor
)
[2] => Array
(
[role] => author
[name] => Autor
)
[3] => Array
(
[role] => contributor
[name] => Prispievateľ
)
)
Questo è come ottenere un array di tutti i ruoli utente esistenti e le capacità per ogni ruolo, in WordPress. Se non si desidera stampare allo schermo, omettere l'ultima riga. La variabile $ ruoli sulla linea 2 si terrà la gamma di utenti e le capacità in modo che si può utilizzare tuttavia è necessario. Vedi sotto per un esempio di matrice restituita.
global $wp_roles;
$roles = $wp_roles->roles;
// print it to the screen
echo '<pre>' . print_r( $roles, true ) . '</pre>';