Questo è un tutorial in quattro parti che copre l'argomento WordPress utenti, ruoli e capacità. La serie riguarderà l'architettura e il design dei ruoli utente in WordPress; evidenziare le funzioni più importanti per interagire con gli utenti e gestire ruoli e capacità; e nell'ultimo tutorial, costruiremo un esempio di vita reale che dimostra l'utilità di questa API.
Nella prima parte abbiamo trattato solo la teoria di utenti, ruoli e capacità. Questa parte si concentrerà sul codice e sulle funzioni offerte da WordPress per interagire con questo sistema. Ovviamente, non copriremo tutte le funzioni di WordPress, ma ho cercato di esaminare le più importanti e utili.
Poiché le modifiche e gli aggiornamenti di WordPress vengono spinti frequentemente, è necessario tornare sempre alla documentazione del Codex e verificare se qualcosa è cambiato. Fornirò un link alla pagina del codice per ogni funzione che tratteremo qui per tua comodità.
Gli utenti in WordPress sono diversi dai visitatori. Sono persone che hanno registrato un account con un nome utente univoco sul tuo sito. Puoi abilitare la registrazione di nuovi utenti sul tuo sito da Impostazioni -> Pannello Generale selezionando la casella "Appartenenza -> Chiunque può registrarsi".
In questa sezione, tratteremo alcune delle funzioni utili per interagire con gli utenti registrati in WordPress. La tua nuova installazione di WordPress dovrebbe avere almeno un utente: quello che installa l'installazione di WordPress. Nelle versioni precedenti, questo era "admin"; tuttavia, ora puoi scegliere il nome utente durante l'installazione di WordPress.
WordPress ha un'interfaccia visuale per creare, aggiornare e cancellare utenti. Dovresti usarlo la maggior parte del tempo. Tuttavia, ci sono casi in cui si desidera farlo con la programmazione: ad esempio, quando si importano utenti da un altro framework o se si crea il proprio modulo di registrazione personalizzato.
WordPress ha quattro funzioni per svolgere queste attività:
wp_create_user
wp_insert_user
wp_update_user
wp_delete_user
All'inizio, può essere un po 'confuso. Tutte le prime 3 funzioni possono creare nuovi utenti, ed entrambi "wp_insert_user
" e "wp_update_user
"può aggiornare gli utenti esistenti, ma c'è una ragione per questo.
Esistono due modi per creare un nuovo utente:
wp_create_user
funzione.wp_insert_user
funzione. Questo dà la possibilità di impostare qualsiasi dato utente per il tuo utente prima di aggiungerlo.Per aggiornare un utente esistente, è necessario utilizzare wp_update_user
. È possibile utilizzare lo stesso wp_insert_user
; tuttavia, questa funzione non ha hash la password dell'utente e quindi può fallire. Pertanto, è meglio usare la funzione giusta per il lavoro giusto.
Di seguito, sto delineando un frammento di esempio di utilizzo per ogni funzione. Dovresti comunque fare riferimento al Codex se stai cercando documentazione più dettagliata.
wp_create_user
add_action ('init', 'wpttuts_createuser'); function wpttuts_createuser () // Dati utente $ user_name = 'new_user'; $ user_password = 'new_user_password'; $ user_email = '[email protected]'; // Crea l'utente $ user_id = wp_create_user ($ user_name, $ user_password, $ user_email); // Verifica se la funzione ha restituito un oggetto di errore WP se (is_wp_error ($ user_id)) $ user_id-> get_error_message (); else // utente creato con successo
wp_insert_user
add_action ('init', 'wpttuts_insertuser'); function wpttuts_insertuser () // Prepara i dati utente $ user_data = array ('user_login' => 'new_user', 'user_password' => 'new_user_password "user_email' => '[email protected]', 'role' => 'amministratore'); // Crea l'utente $ user_id = wp_insert_user ($ user_data); // Controlla se la funzione ha restituito un oggetto di errore WP se (is_wp_error ($ user_id)) $ user_id-> get_error_message (); else // utente creato con successo
wp_update_user
add_action ('init', 'wpttuts_updateuser'); function wpttuts_updateuser () // Prepara i dati utente $ user_data = array ('user_id' => 3, 'description' => 'Il nostro utente appena creato'); // Aggiorna la descrizione dell'utente $ user_id = wp_update_user ($ user_data); // Verifica se la funzione ha restituito un oggetto di errore WP se (is_wp_error ($ user_id)) $ user_id-> get_error_message (); else // utente aggiornato con successo
wp_delete_user
add_action ('init', 'wpttuts_deleteuser'); function wpttuts_deleteuser () if (wp_delete_user (3, 1)) // Utente rimosso con successo
WordPress offriva due funzioni per recuperare l'elenco degli utenti, quindi non è necessario interrogare il database. La prima funzione "get_users_of_blog ()
"restituisce un array di tutti gli utenti nel blog corrente (oppure puoi passare un ID blog se stai eseguendo un'installazione MultiSite). La seconda funzione"get_users ()
"restituisce un elenco di utenti in base agli argomenti passati alla funzione, eliminando la necessità di eseguire query SQL personalizzate nel database.
Entrambe le funzioni restituiscono una serie di oggetti dati utente. (Eccetto per get_users ()
dove è possibile specificare di restituire solo un campo particolare.) L'oggetto utente verrà trattato in maggiori dettagli nella prossima sezione.
Il "get_users_of_blog ()
"la funzione è ora deprecata, quindi non dovresti più usarla e usa"get_users ()
"Invece, il seguente è un esempio di utilizzo per"get_users ()
".
add_action ('init', 'wpttuts_getusers'); function wpttuts_getusers () // Criteri di query $ args = array ('orderby' => 'url', 'order' => 'ASC'); // Ottieni la matrice utenti $ users = get_users ($ args); // Passa in rassegna gli utenti e visualizza la loro home page foreach ($ users as $ user) echo 'user_url. '">'. $ user-> user_url. '';
L'argomento della funzione accetta più opzioni. Puoi trovare l'elenco completo di queste opzioni nella pagina Codex della funzione.
blog_id
Utile solo per installazioni multisito. Il valore predefinito è l'ID del blog corrente.ruolo
Limita gli utenti restituiti al ruolo specificato.includere
Un array di ID utente da includere nella query restituita.escludere
Un array di ID utente da escludere dalla query restituita.WP_User
ClasseIl WP_User
class consente l'accesso a proprietà, capacità e metodi relativi per un particolare utente. Per creare una nuova istanza della classe è necessario l'ID utente o il nome utente; e se si è su un'installazione multisito, è necessario anche l'ID del blog.
È possibile avviare la classe per un particolare utente e scaricare il contenuto della classe. Questo mostrerà solo le proprietà, ma è comunque utile se vuoi leggere all'interno della classe utente.
add_action ('init', 'wptuts_wpuserclass'); function wptuts_wpuserclass () $ user = new WP_User (1); var_dump ($ user);
Di seguito è riportato un riepilogo delle proprietà e dei metodi di WP_User
classe:
WP_User
Proprietàdati
(Oggetto con i dettagli dell'utente come nome utente, password, URL ...)ID
(Numero intero L'ID utente)caps
(schieramento)ruoli
(schieramento Ruoli assegnati all'utente)cap_key
(Stringa)tutto maiuscolo
(schieramento Tutte le funzionalità che l'utente ha)filtro
(Nullo)WP_User
Metodi pubbliciget_role_caps ()
Imposta i ruoli e le proprietà allcaps.add_role ()
Aggiungi un ruolo all'utente.remove_role ()
Rimuovi un ruolo dall'utente.set_role ()
Imposta un ruolo per l'utente. Questo rimuoverà i ruoli assegnati in precedenza.add_cap ()
Aggiungi funzionalità all'utente.remove_cap ()
Rimuovi funzionalità dall'utente.remove_all_caps ()
Rimuovi tutte le funzionalità dell'utente.has_cap ()
Verifica se l'utente ha una capacità o un nome di ruolo.Come sottolineato nell'articolo precedente, i meta-dati degli utenti sono dati sull'utente salvato nel wp_usermeta
tavolo. Viene salvato come valori chiave / coppia e il valore meta può essere qualsiasi tipo di dati. La coppia non è necessariamente unica. È possibile memorizzare più coppie con la stessa chiave.
La funzione add_user_meta ()
aggiunge nuovi metadati dell'utente. La funzione restituisce true quando i dati vengono aggiunti correttamente e false se non riesce. Come accennato in precedenza, è possibile aggiungere molti meta-valori con la stessa chiave. Se si desidera rendere le meta chiavi univoche, impostare il quarto argomento su true.
add_action ('init', 'wptuts_addusermeta'); function wptuts_addusermeta () // Aggiungi più meta-valori con la stessa meta-chiave add_user_meta (1, 'bookmarks', 'http://site1.com', false); add_user_meta (1, 'bookmarks', 'http://site2.com', false); add_user_meta (1, 'bookmarks', 'http://site3.com', false);
La funzione get_user_meta ()
restituisce il meta valore in base all'ID utente e alla meta chiave passati ad esso.
add_action ('init', 'wptuts_getusermeta'); function wptuts_getusermeta () // Recupera i segnalibri utente $ bookmarks = get_user_meta (1, 'bookmarks', false); eco '
La funzione update_user_meta ()
aggiorna un singolo meta-valore. Se sono presenti più valori per la stessa meta chiave e non è stato specificato alcun valore meta precedente, il nuovo valore sovrascriverà tutti i metadati precedenti.
add_action ('init', 'wptuts_updateusermeta'); function wptuts_updateusermeta () // Aggiorna un segnalibro utente update_user_meta (1, 'bookmarks', 'https://site2.com', 'http://site2.com');
La funzione delete_user_data ()
rimuove una singola o tutte le meta chiave / coppie per una data meta chiave. Se si desidera rimuovere un singolo valore, è necessario specificarlo nel terzo argomento.
add_action ('init', 'wptuts_removeusermeta'); function wptuts_removeusermeta () // Aggiorna un segnalibro utente delete_user_meta (1, 'bookmarks', 'https://site2.com');
I ruoli di WordPress sono estensibili. È possibile aggiungere e rimuovere ruoli. L'aggiunta di un ruolo è piuttosto semplice, è necessario un nome di slug di ruolo, un nome visualizzato per il ruolo; e le capacità del ruolo.
add_action ('init', 'wptuts_addrole'); function wptuts_addrole () add_role ('uploader', 'Uploader', array ('upload_files')); add_role ('link_manager', 'Link Manager', array ('manage_links'));
Se controlli una pagina delle impostazioni utente (Utente-> Scegli qualsiasi utente-> Modifica), troverai che i tuoi nuovi ruoli aggiunti sono disponibili. Vengono visualizzati con il nome visualizzato che hai inserito.
È importante ricordare che la creazione dei ruoli deve essere eseguita una sola volta. Quindi se ti stai agganciando al "dentro
"azione come nel codice sopra, stai ricreando il ruolo ogni volta che si attiva il codice. Non è una buona cosa, in pratica, vuoi crearlo una sola volta, puoi quindi collegarlo al gancio di attivazione del plugin, e assicurati di rimuoverlo quando il plugin è disattivato.
Anche rimuovere i ruoli è abbastanza semplice. Hai solo bisogno del nome dello slug del ruolo.
add_action ('init', 'wptuts_removerole'); function wptuts_removerole () remove_role ('uploader'); remove_role ('link_manager');
Analogamente agli utenti, i ruoli hanno una classe speciale: WP_Role
. Tuttavia, l'inizializzazione di questa classe richiede sia il nome del ruolo sia le funzionalità del ruolo; che non è abbastanza utile.
WordPress offre un'altra funzione get_role ()
che richiede solo il nome del ruolo e inizializza la classe per te.
add_action ('init', 'wptuts_getrole'); function wptuts_getrole () $ role = get_role ('editor'); var_dump ($ ruolo);
L'oggetto restituito ha due proprietà e tre metodi.
WP_Role
Proprietàcapacità
Una serie di funzionalità che il ruolo ha.nome
Il nome del ruolo.WP_Role
metodiadd_cap ()
Aggiungi la capacità all'oggetto ruolohas_cap ()
Verificare se il ruolo ha la capacitàremove_cap ()
Rimuovere la funzionalità dal ruoloRuoli e capacità ci sono, non fanno nulla. Dovresti applicarli nel tuo plugin o tema controllandoli prima di eseguire il codice. Dovresti sempre controllare le funzionalità invece dei ruoli. Un utente con un ruolo di "editor" non garantisce di avere le funzionalità predefinite che WordPress assegna a questo ruolo poiché possono essere modificate da un altro plug-in o dal proprietario del blog stesso.
WordPress ha 3 funzioni per il controllo delle autorizzazioni, che sono in qualche modo intercambiabili.
current_user_can ()
user_can ()
author_can ()
current_user_can ()
controlla se l'utente corrente ha la capacità specificata. Accetta anche un post o un oggetto per verificare la presenza di meta-funzionalità.
user_can ()
funziona allo stesso modo ma puoi specificare l'ID utente. Tuttavia, non controlla le meta-capacità. Quindi è un po 'carente se si desidera verificare una meta-capacità per un utente diverso da quello attuale. Per questo, puoi usare il author_can ()
funzione che verifica se un autore del post può eseguire un'attività specifica in base a capacità e ID post.
// verifica se l'autore del post del primo post può pubblicare il post se (author_can (1, 'publish_posts')) publish_post_function (); // pubblica il post else echo "Non hai il diritto di pubblicare il post";
In questa parte, ho cercato di coprire quante più funzioni di WordPress possibile, e anche di spiegare quando dovresti usare ciascuna funzione. Ora, dovresti essere in grado di creare un plugin o un tema che utilizza il sistema di capacità. Nella prossima parte, ti mostrerò come costruire un plugin che usi questo sistema.