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?

È stato utile?

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>';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top