WordPress Rollen en mogelijkheden functies van Note

Dit is een vierdelige serie-zelfstudie over het onderwerp WordPress-gebruikers, rollen en mogelijkheden. De serie behandelt de architectuur en het ontwerp van gebruikersrollen in WordPress; markeer de belangrijkste functies voor interactie met gebruikers en het beheren van rollen en mogelijkheden; en in de laatste zelfstudie gaan we een realistisch voorbeeld geven dat het nut van deze API aantoont.


Invoering

In het eerste deel behandelden we alleen theorie over gebruikers, rollen en mogelijkheden. Dit deel zal zich richten op code en de functies die WordPress biedt om met dit systeem te communiceren. Het is duidelijk dat we niet alle functies van WordPress zullen behandelen, maar ik heb geprobeerd de belangrijkste en nuttigste functies te bespreken.

Naarmate WordPress verandert en updates regelmatig worden gepusht, moet u altijd terugkeren naar de Codex-documentatie en controleren of er iets is gewijzigd. Ik zal een link naar de Codex-pagina verstrekken voor elke functie die we hier zullen behandelen voor uw gemak.


Gebruikers beheren

Gebruikers in WordPress zijn anders dan bezoekers. Het zijn mensen die een account hebben geregistreerd met een unieke gebruikersnaam op uw site. U kunt de registratie van nieuwe gebruikers op uw site inschakelen via het paneel Instellingen -> Algemeen door het selectievakje "Lidmaatschap -> Iedereen kan registreren" aan te vinken.

In deze sectie bespreken we enkele handige functies om te communiceren met geregistreerde gebruikers in WordPress. Uw nieuwe WordPress-installatie moet ten minste één gebruiker hebben: degene die de installatie van WordPress installeert. In oudere versies was dit de "admin"; u kunt nu echter de gebruikersnaam kiezen bij het installeren van WordPress.

  1. Gebruikers maken, bijwerken en verwijderen

    WordPress heeft een visuele interface om gebruikers aan te maken, bij te werken en te verwijderen. Je zou het het grootste deel van de tijd moeten gebruiken. Er zijn echter gevallen wanneer u dat wilt doen met programmeren: bijvoorbeeld bij het importeren van gebruikers uit een ander kader of als u uw eigen aangepaste registratieformulier aan het maken bent.

    WordPress heeft vier functies om deze activiteiten uit te voeren:

    • wp_create_user
    • wp_insert_user
    • wp_update_user
    • wp_delete_user

    In het begin kan het een beetje verwarrend zijn. Alle eerste 3 functies kunnen nieuwe gebruikers maken en beide "wp_insert_user"en"wp_update_user"kan bestaande gebruikers bijwerken, maar daar is een reden voor.

    Er zijn twee manieren om een ​​nieuwe gebruiker te maken:

    1. Door alleen de minimale informatie door te geven die vereist is om de gebruiker te maken (gebruikersnaam, wachtwoord en e-mail). In dit geval zou u de wp_create_user functie.
    2. Door een reeks gebruikersgegevens door te geven. In dit geval zou u de wp_insert_user functie. Dit geeft de mogelijkheid om gebruikersgegevens voor uw gebruiker in te stellen voordat u deze toevoegt.

    Om een ​​bestaande gebruiker bij te werken, zou u moeten gebruiken wp_update_user. Het is mogelijk om hetzelfde te gebruiken wp_insert_user; deze functie hash niet het gebruikerswachtwoord en kan dus mislukken. Daarom is het beter om de juiste functie voor de juiste taak te gebruiken.

    Hieronder schets ik een voorbeeld van het gebruik van elke functie. U moet echter de Codex raadplegen als u op zoek bent naar meer gedetailleerde documentatie.

    Gebruik van wp_create_user

     add_action ('init', 'wpttuts_createuser'); function wpttuts_createuser () // Gebruikersgegevens $ user_name = 'nieuwe_gebruiker'; $ user_password = 'new_user_password'; $ user_email = '[email protected]'; // Maak de gebruiker $ user_id = wp_create_user ($ user_name, $ user_password, $ user_email); // Controleert of de functie een WP-foutobject retourneerde if (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // gebruiker is succesvol gemaakt

    Gebruik van wp_insert_user

     add_action ('init', 'wpttuts_insertuser'); function wpttuts_insertuser () // Bereid de gebruikersgegevens voor $ user_data = array ('user_login' => 'new_user', 'user_password' => 'new_user_password "user_email' => '[email protected]', 'role' => 'administrator'); // Creëer de gebruiker $ user_id = wp_insert_user ($ user_data); // Controleert of de functie een WP Error Object teruggeeft als (is_wp_error ($ user_id)) $ user_id-> get_error_message (); else  // gebruiker is succesvol gemaakt

    Gebruik van wp_update_user

     add_action ('init', 'wpttuts_updateuser'); function wpttuts_updateuser () // Bereid de gebruikersgegevens voor $ user_data = array ('user_id' => 3, 'description' => 'Onze nieuw aangemaakte gebruiker'); // Updates van de gebruikersbeschrijving $ user_id = wp_update_user ($ user_data); // Controleert of de functie een WP-foutobject retourneerde if (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // gebruiker is succesvol bijgewerkt

    Gebruik van wp_delete_user

     add_action ('init', 'wpttuts_deleteuser'); functie wpttuts_deleteuser () if (wp_delete_user (3, 1)) // gebruiker is verwijderd
  2. De lijst met gebruikers ophalen

    WordPress gebruikte om twee functies aan te bieden om de lijst met gebruikers op te halen, zodat u niet naar de database hoeft te zoeken. De eerste functie "get_users_of_blog ()"retourneert een array van alle gebruikers in het huidige blog (of u kunt een blog-ID doorgeven als u een MultiSite-installatie uitvoert) .De tweede functie"get_users ()"retourneert een lijst met gebruikers op basis van de argumenten die aan de functie zijn doorgegeven, zodat er geen aangepaste SQL-query's naar de database hoeven te worden uitgevoerd.

    Beide functies retourneren een array met gebruikersgegevensobjecten. (Behalve voor get_users () waar u kunt opgeven om alleen een bepaald veld te retourneren.) Het gebruikersobject wordt behandeld in meer details in het volgende gedeelte.

    De "get_users_of_blog ()"functie is nu verouderd, dus u zou het niet langer moeten gebruiken en gebruiken"get_users ()"In plaats daarvan is het volgende een voorbeeld van gebruik voor"get_users ()".

     add_action ('init', 'wpttuts_getusers'); function wpttuts_getusers () // Querycriteria $ args = array ('orderby' => 'url', 'order' => 'ASC'); // Verkrijg de array array $ users = get_users ($ args); // Doorloop gebruikers en toon hun startpagina voor elk ($ gebruikers als $ gebruiker) echo 'user_url. '">'. $ user-> user_url. '';

    Het functieargument accepteert meer opties. Je vindt de volledige lijst van deze opties in de functie Codex-pagina.

    • blog_id Alleen nuttig voor installaties op meerdere locaties. De standaardwaarde is de huidige blog-ID.
    • rol Beperk de geretourneerde gebruikers tot de opgegeven rol.
    • omvatten Een reeks gebruikers-ID's die moet worden opgenomen in de geretourneerde query.
    • uitsluiten Een reeks gebruikers-ID's om uit te sluiten van de geretourneerde query.
  3. De WP_User Klasse

    De WP_User klasse biedt toegang tot eigenschappen, mogelijkheden en methoden die relatief zijn voor een bepaalde gebruiker. Om een ​​nieuw exemplaar van de klasse te maken, hebt u de gebruikers-ID of gebruikersnaam nodig; en als je een multisite-installatie uitvoert, heb je ook de blog-ID nodig.

    U kunt de klasse voor een bepaalde gebruiker starten en de klasinhoud dumpen. Hierdoor worden alleen de eigenschappen weergegeven, maar het is nog steeds nuttig als u in de gebruikersklasse wilt lezen.

     add_action ('init', 'wptuts_wpuserclass'); function wptuts_wpuserclass () $ user = new WP_User (1); var_dump ($ user); 

    Het volgende is een samenvatting van de eigenschappen en methoden van de WP_User klasse:

    WP_User eigenschappen

    • gegevens (Voorwerp met de gebruikersdetails zoals de gebruikersnaam, wachtwoord, URL ...)
    • ID kaart (Geheel getal Het gebruikers-ID)
    • caps (reeks)
    • rollen (reeks Rollen toegewezen aan de gebruiker)
    • cap_key (Draad)
    • in hoofdletters (reeks Alle mogelijkheden die de gebruiker heeft)
    • filter (Nul)

    WP_User Openbare methoden

    • get_role_caps () Stelt de eigenschappen rollen en allcaps in.
    • add_role () Voeg een rol toe aan de gebruiker.
    • remove_role () Verwijder een rol van de gebruiker.
    • set_role () Stel een rol in voor de gebruiker. Hiermee worden eerder toegewezen rollen verwijderd.
    • add_cap () Voeg de mogelijkheid toe aan de gebruiker.
    • remove_cap () Verwijder de mogelijkheid van de gebruiker.
    • remove_all_caps () Verwijder alle mogelijkheden van de gebruiker.
    • has_cap () Controleert of de gebruiker een mogelijkheid of rolnaam heeft.
  4. Meta-gegevens van gebruikers

    Zoals in het vorige artikel is aangegeven, zijn de metagegevens van gebruikers gegevens over de gebruiker die is opgeslagen in de wp_usermeta tafel. Het wordt opgeslagen als sleutel- / paarwaarden en de metawaarde kan elk type gegevens zijn. Het paar is niet noodzakelijk uniek. U kunt meerdere paren opslaan met dezelfde sleutel.

    Een gebruikers-metadata toevoegen

    De functie add_user_meta () voegt nieuwe gebruikersmetadata toe. De functie geeft true als de gegevens met succes zijn toegevoegd en onwaar als deze mislukt. Zoals eerder vermeld, is het mogelijk om veel metawaarden met dezelfde sleutel toe te voegen. Als u meta-sleutels uniek wilt maken, stelt u het vierde argument in op true.

     add_action ('init', 'wptuts_addusermeta'); function wptuts_addusermeta () // Voeg meerdere metawaarden toe met dezelfde meta-sleutel add_user_meta (1, 'bladwijzers', 'http://site1.com', false); add_user_meta (1, 'bladwijzers', 'http://site2.com', false); add_user_meta (1, 'bladwijzers', 'http://site3.com', false); 

    Metadata van een gebruiker ophalen

    De functie get_user_meta () retourneert de metawaarde op basis van het gebruikers-ID en de bijbehorende metasleutel.

     add_action ('init', 'wptuts_getusermeta'); function wptuts_getusermeta () // Haalt de bladwijzers van de gebruiker $ bookmarks = get_user_meta (1, 'bladwijzers', false) op; echo '
      '; foreach ($ bladwijzers als $ bladwijzer) echo '
    • '. $ bladwijzer. '
    • '; echo '
    ';

    Een gebruikers-metadata bijwerken

    De functie update_user_meta () werkt een enkele metawaarde bij. Als er meerdere waarden voor dezelfde meta-sleutel zijn en er geen vorige metawaarde is opgegeven, overschrijft de nieuwe waarde alle vorige metawaarden.

     add_action ('init', 'wptuts_updateusermeta'); function wptuts_updateusermeta () // Updates van een gebruikersbladwijzer update_user_meta (1, 'bladwijzers', 'https://site2.com', 'http://site2.com'); 

    Een gebruikers-metadata verwijderen

    De functie delete_user_data () verwijdert een enkele of alle metakey / -paren voor een bepaalde metatoets. Als u een enkele waarde wilt verwijderen, moet u deze in het derde argument opgeven.

     add_action ('init', 'wptuts_removeusermeta'); function wptuts_removeusermeta () // Updates van een gebruikersbladwijzer delete_user_meta (1, 'bladwijzers', 'https://site2.com'); 

Rollen en mogelijkheden beheren

  1. Rollen maken en verwijderen

    WordPress-rollen zijn uitbreidbaar. U kunt rollen toevoegen en verwijderen. Het toevoegen van een rol is vrij eenvoudig, je hebt een rolslaknaam nodig, een weergavenaam voor de rol; en de capaciteiten die de rol heeft.

     add_action ('init', 'wptuts_addrole'); functie wptuts_addrole () add_role ('uploader', 'Uploader', array ('upload_files')); add_role ('link_manager', 'Link Manager', array ('manage_links')); 

    Als u een pagina met gebruikersinstellingen controleert (Gebruiker-> Kies een gebruiker-> Bewerken), zult u merken dat uw nieuw toegevoegde rollen beschikbaar zijn. Ze worden weergegeven met de weergavenaam die u hebt ingevoerd.

    Het is belangrijk om te vermelden dat rolcreatie slechts eenmaal hoeft te worden uitgevoerd. Dus als je aan het haken bent "in het"actie zoals in de bovenstaande code, u maakt de rol opnieuw aan telkens wanneer de code wordt geactiveerd. Dit is geen goede zaak, in de praktijk wilt u het slechts één keer maken. U kunt het dan aansluiten op de activeringshaak van de plug-in, en zorg ervoor om het te verwijderen wanneer de plug-in gedeactiveerd is.

    Het verwijderen van rollen is ook vrij eenvoudig. Je hebt alleen de rolnaam slak nodig.

     add_action ('init', 'wptuts_removerole'); functie wptuts_removerole () remove_role ('uploader'); remove_role ('link_manager'); 
  2. Capabilities aan rollen toevoegen

    Net als gebruikers hebben rollen een speciale klasse: WP_Role. Het initialiseren van deze klasse vereist echter zowel de rolnaam als de rolmogelijkheden; wat niet zo handig is.

    WordPress biedt een andere functie get_role () waarvoor alleen de rolnaam vereist is en die de klasse voor u initialiseert.

     add_action ('init', 'wptuts_getrole'); functie wptuts_getrole () $ role = get_role ('editor'); var_dump ($ rol); 

    Het geretourneerde object heeft twee eigenschappen en drie methoden.

    WP_Role eigenschappen

    • mogelijkheden Een scala aan mogelijkheden die de rol heeft.
    • naam De rolnaam.

    WP_Role methoden

    • add_cap () Voeg de mogelijkheid toe aan het role-object
    • has_cap () Controleer of de rol de mogelijkheid heeft
    • remove_cap () Verwijder de mogelijkheid van de rol
  3. Controleren op machtigingen

    Rollen en capaciteiten zijn er, ze doen niets. U moet ze afdwingen in uw plug-in of thema door ze te controleren voordat u de code uitvoert. Je moet altijd controleren op mogelijkheden in plaats van rollen. Een gebruiker met een rol van "editor" kan niet garanderen dat hij over de standaardmogelijkheden beschikt die WordPress aan deze rol toewijst, omdat deze kunnen worden gewijzigd door een andere plug-in of de eigenaar van de blog zelf.

    WordPress heeft 3 functies voor het controleren van machtigingen, die tot op zekere hoogte onderling uitwisselbaar zijn.

    • current_user_can ()
    • user_can ()
    • author_can ()

    current_user_can () controleert of de huidige gebruiker de opgegeven capaciteit heeft. Het accepteert ook een bericht of object om te controleren op meta-mogelijkheden.

    user_can () werkt op dezelfde manier, maar u kunt de gebruikers-ID opgeven. Het controleert echter niet op metamogelijkheden. Het is dus een beetje ontbrekend als u wilt controleren op een meta-mogelijkheid voor een andere gebruiker dan de huidige gebruiker. Daarvoor kunt u de author_can () functie die controleert of een postauteur een specifieke taak kan uitvoeren op basis van een functie en een post-ID.

     // controleert of de postauteur van het eerste bericht het bericht kan publiceren als (author_can (1, 'publish_posts')) publication_post_function (); // publiceer het bericht else echo "U hebt niet het recht om het bericht te publiceren"; 

Conclusie

In dit deel heb ik geprobeerd om zoveel mogelijk functies van WordPress te behandelen, en ook uit te leggen wanneer je elke functie zou moeten gebruiken. Nu zou u een plug-in of thema moeten kunnen maken dat gebruikmaakt van het bekwaamheidssysteem. In het volgende deel laat ik je zien hoe je een plug-in bouwt die dit systeem gebruikt.