Ruoli e funzionalità di WordPress funzioni di nota

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.


introduzione

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à.


Gestione degli utenti

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.

  1. Creazione, aggiornamento e cancellazione degli utenti

    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:

    1. Passando solo le informazioni minime necessarie per creare l'utente (nome utente, password ed e-mail). In questo caso, dovresti usare il wp_create_user funzione.
    2. Passando una serie di dati dell'utente. In questo caso, dovresti usare il 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.

    Utilizzo di 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

    Utilizzo di 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

    Utilizzo di 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

    Utilizzo di wp_delete_user

     add_action ('init', 'wpttuts_deleteuser'); function wpttuts_deleteuser () if (wp_delete_user (3, 1)) // Utente rimosso con successo
  2. Ottenere l'elenco degli utenti

    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.
  3. Il WP_User Classe

    Il 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 pubblici

    • get_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.
  4. Meta-dati degli utenti

    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.

    Aggiunta di un meta-dati dell'utente

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

    Recupero di un meta-dati dell'utente

    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 '
      '; foreach ($ segnalibri come $ segnalibro) echo '
    • '. $ segnalibro. '
    • '; eco '
    ';

    Aggiornamento di un Meta-Dati Utente

    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'); 

    Rimozione di un meta-dati dell'utente

    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'); 

Gestione di ruoli e funzionalità

  1. Creazione e rimozione di ruoli

    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'); 
  2. Aggiunta di funzionalità ai ruoli

    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 metodi

    • add_cap () Aggiungi la capacità all'oggetto ruolo
    • has_cap () Verificare se il ruolo ha la capacità
    • remove_cap () Rimuovere la funzionalità dal ruolo
  3. Verifica delle autorizzazioni

    Ruoli 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"; 

Conclusione

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.