WordPress Roller och funktioner Funktioner av Obs

Detta är en serie med fyra delar, som omfattar WordPress-användare, roller och funktioner. Serien kommer att täcka arkitekturen och utformningen av användarroller i WordPress; markera de viktigaste funktionerna för att interagera med användare och hantera roller och funktioner; och i den sista handledningen kommer vi att bygga ett verkligt exempel som visar användbarheten av detta API.


Introduktion

I första delen omfattade vi bara teori om användare, roller och förmågor. Den här delen kommer att fokusera på kod och de funktioner som WordPress erbjuder för att interagera med det här systemet. Självklart kommer vi inte att täcka alla funktioner som WordPress har, men jag försökte gå över de viktigaste och användbara.

Som WordPress ändras och uppdateringar pressas ofta, bör du alltid återgå till Codex-dokumentationen och kontrollera om något ändrats. Jag ger en länk till Codex-sidan för varje funktion som vi täcker här för din bekvämlighet.


Hantera användare

Användare i WordPress skiljer sig från besökare. De är personer som har registrerat ett konto med ett unikt användarnamn på din webbplats. Du kan aktivera registreringen av nya användare på din webbplats från panelen Inställningar -> Allmänt genom att kryssrutan "Medlemskap -> Vem som helst kan registrera".

I det här avsnittet kommer vi att täcka några av de användbara funktionerna för att interagera med registrerade användare i WordPress. Din nya WordPress-inställning ska ha minst en användare: den som installerar WordPress-installationen. I äldre versioner var detta "admin"; Men nu kan du välja användarnamnet när du installerar WordPress.

  1. Skapa, uppdatera och ta bort användare

    WordPress har ett visuellt gränssnitt för att skapa, uppdatera och ta bort användare. Du borde använda det för det mesta. Det finns dock fall där du vill göra det med programmering: Till exempel när du importerar användare från ett annat ramverk eller om du bygger ditt eget anpassade registreringsformulär.

    WordPress har fyra funktioner för att utföra dessa aktiviteter:

    • wp_create_user
    • wp_insert_user
    • wp_update_user
    • wp_delete_user

    Först kan det vara lite förvirrande. Alla de första 3 funktionerna kan skapa nya användare, och båda "wp_insert_user"och"wp_update_user"kan uppdatera befintliga användare. Men det finns en anledning till det.

    Det finns två sätt att skapa en ny användare:

    1. Genom att endast ge den minimala information som krävs för att skapa användaren (användarnamn, lösenord och e-post). I det här fallet bör du använda wp_create_user fungera.
    2. Genom att överföra en grupp av användarens data. I det här fallet bör du använda wp_insert_user fungera. Detta ger möjlighet att ställa in användardata för din användare innan du lägger till den.

    För att uppdatera en befintlig användare, ska du använda wp_update_user. Det är möjligt att använda samma wp_insert_user; Denna funktion har dock inte användarnamnet och kan därför misslyckas. Därför är det bättre att använda rätt funktion för rätt jobb.

    Nedan beskriver jag ett användarprov för varje funktion. Du bör dock hänvisa till Codex om du söker mer detaljerad dokumentation.

    Användning av wp_create_user

     add_action ('init', 'wpttuts_createuser'); funktion wpttuts_createuser () // Användardata $ user_name = 'new_user'; $ user_password = 'new_user_password'; $ user_email = '[email protected]'; // Skapa användaren $ user_id = wp_create_user ($ user_name, $ user_password, $ user_email); // Kontrollerar om funktionen returnerade ett WP-felobjekt om (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // användaren skapades framgångsrikt

    Användning av wp_insert_user

     add_action ('init', 'wpttuts_insertuser'); funktionen wpttuts_insertuser () // Förbered användardata $ user_data = array ('user_login' => 'new_user', 'user_password' => 'new_user_password' user_email '=>' [email protected] ',' roll '=> 'Administrator'); // Skapa användaren $ user_id = wp_insert_user ($ user_data); // Kontrollerar om funktionen returnerade ett WP-felobjekt om (is_wp_error ($ user_id)) $ user_id-> get_error_message (); else  // användaren skapades framgångsrikt

    Användning av wp_update_user

     add_action ('init', 'wpttuts_updateuser'); funktion wpttuts_updateuser () // Förbered användardata $ user_data = array ('user_id' => 3, 'description' => 'Vår nyskapade användare'); // Uppdaterar användarbeskrivningen $ user_id = wp_update_user ($ user_data); // Kontrollerar om funktionen returnerade ett WP-felobjekt om (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  annan // användaren uppdaterades framgångsrikt

    Användning av wp_delete_user

     add_action ('init', 'wpttuts_deleteuser'); funktion wpttuts_deleteuser () if (wp_delete_user (3, 1)) // Användaren borttaget framgångsrikt
  2. Hämta listan över användare

    WordPress brukade erbjuda två funktioner för att hämta listan över användare, så du behöver inte fråga databasen. Den första funktionen "get_users_of_blog ()"returnerar en grupp av alla användare i den aktuella bloggen (eller du kan skicka ett blogg-ID om du kör en MultiSite-installation). Den andra funktionen"get_users ()"returnerar en lista över användare baserat på argumenten som skickas till funktionen. Detta eliminerar behovet av att göra egna SQL-frågor till databasen.

    Båda funktionerna returnerar en rad användarobjektobjekt. (Förutom get_users () där du kan ange att bara returnera ett visst fält.) Användarobjektet kommer att beskrivas i mer detaljer i nästa avsnitt.

    "get_users_of_blog ()"funktionen är nu avstängd, så du borde inte längre använda den och använda"get_users ()"istället. Följande är ett exempel på användning för"get_users ()".

     add_action ('init', 'wpttuts_getusers'); funktion wpttuts_getusers () // Query kriterier $ args = array ('orderby' => 'url', 'order' => 'ASC'); // Få användarna array $ users = get_users ($ args); // Loop genom användare, och visa deras hemsida foreach ($ användare som $ användare) echo 'user_url. ''> '. $ user-> user_url.' ';

    Funktionsargumentet accepterar fler alternativ. Du hittar den fullständiga listan över dessa alternativ på funktionen Codex-sida.

    • blog_id Endast användbart för multisitinstallationer. Standardvärdet är det aktuella blogg-id.
    • roll Begränsa de återvände användare till den angivna rollen.
    • inkludera En uppsättning användar-ID-er som ska inkluderas i den returnerade frågan.
    • utesluta En uppsättning användar-ID för att utesluta från den returnerade frågan.
  3. De WP_User Klass

    De WP_User klassen tillåter tillgång till egenskaper, funktioner och metoder relativt för en viss användare. För att skapa en ny instans av klassen behöver du användar-ID eller användarnamn; och om du är på en flersidig installation behöver du också blogg-id.

    Du kan initiera klassen för en viss användare och dumpa klassinnehållet. Detta visar bara egenskaperna, men det är fortfarande användbart om du vill läsa inuti användarklassen.

     add_action ('init', 'wptuts_wpuserclass'); funktion wptuts_wpuserclass () $ user = ny WP_User (1); var_dump ($ användare); 

    Nedan följer en sammanfattning av egenskaperna och metoderna för WP_User klass:

    WP_User Egenskaper

    • data (Objekt med användarinformationen som användarnamnet, lösenordet, webbadressen ...)
    • ID (Heltal Användar-ID)
    • caps (Array)
    • roller (Array Roller tilldelade användaren)
    • cap_key (Sträng)
    • VERSALER (Array Alla funktioner som användaren har)
    • filtrera (Null)

    WP_User Offentliga metoder

    • get_role_caps () Ställer in roller och allcaps egenskaper.
    • add_role () Lägg till en roll för användaren.
    • remove_role () Ta bort en roll från användaren.
    • set_role () Ange en roll för användaren. Detta tar bort tidigare tilldelade roller.
    • add_cap () Lägg till kapacitet för användaren.
    • remove_cap () Ta bort kapacitet från användaren.
    • remove_all_caps () Ta bort alla funktioner hos användaren.
    • has_cap () Kontrollerar om användaren har en kapacitet eller ett namn.
  4. Användarnas Metadata

    Som påpekats i föregående artikel är användarens metadata data om den användare som sparats i wp_usermeta tabell. Den sparas som nyckel / parvärden, och metavärdet kan vara vilken typ av data som helst. Paret är inte nödvändigtvis unikt. Du kan lagra flera par med samma nyckel.

    Lägga till en användar-metadata

    Funktionen add_user_meta () lägger till nya metadata för användaren. Funktionen returnerar sant när data har lagts till och falsk om den misslyckas. Som tidigare nämnts är det möjligt att lägga till många meta-värden med samma nyckel. Om du vill göra metatangenterna unika, sätt det fjärde argumentet till sant.

     add_action ('init', 'wptuts_addusermeta'); funktion wptuts_addusermeta () // Lägg till flera meta-värden med samma metatangent add_user_meta (1, 'bokmärken', 'http://site1.com', felaktigt); add_user_meta (1, "bokmärken", "http://site2.com", felaktigt); add_user_meta (1, "bokmärken", "http://site3.com", felaktigt); 

    Hämta en användar-metadata

    Funktionen get_user_meta () returnerar metavärdet baserat på användar-ID och metatangent som skickas till den.

     add_action ('init', 'wptuts_getusermeta'); funktion wptuts_getusermeta () // Hämtar användarbokmärken $ bookmarks = get_user_meta (1, 'bokmärken', false); eko "
      '; foreach ($ bokmärken som $ bokmärke) echo '
    • '. $ bokmärke. '
    • '; eko
    ';

    Uppdatering av användar-metadata

    Funktionen update_user_meta () uppdaterar ett enda metavärde. Om det finns flera värden för samma metatangent, och inget tidigare metavärde specificerats, kommer det nya värdet att överskriva alla tidigare meta-värden.

     add_action ('init', 'wptuts_updateusermeta'); funktion wptuts_updateusermeta () // Uppdaterar ett användarbokmärke update_user_meta (1, "bokmärken", "https://site2.com", "http://site2.com"); 

    Ta bort en metadata från användaren

    Funktionen delete_user_data () tar bort en enda eller alla metatangenter / par för en given metatangent. Om du vill ta bort ett enda värde ska du ange det i det tredje argumentet.

     add_action ('init', 'wptuts_removeusermeta'); funktion wptuts_removeusermeta () // Uppdaterar ett användarbokmärke delete_user_meta (1, "bokmärken", "https://site2.com"); 

Hantera roller och förmågor

  1. Skapa och ta bort roller

    WordPress roller är extensible. Du kan lägga till och ta bort roller. Att lägga till en roll är ganska enkel, du behöver ett rollslugnamn, ett visningsnamn för rollen; och de funktioner som rollen har.

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

    Om du kontrollerar en användarinställningssida (Användare-> Välj valfri Användare-> Redigera), kommer du att finna att dina nya roller är tillgängliga. De visas med visningsnamnet du skrev in.

    Det är viktigt att nämna att rollskapandet behöver göras en gång. Så om du hakar till "i det"Åtgärder som i koden ovan skapar du rollen varje gång koden brinner. Det här är inte bra, i praktiken vill du bara skapa det en gång. Du kan sedan koppla den till plugin aktiveringskroken, och se till att ta bort den när plugin är avaktiverad.

    Att ta bort roller är ganska enkelt också. Du behöver bara rollslugnamnet.

     add_action ('init', 'wptuts_removerole'); funktion wptuts_removerole () remove_role ('uploader'); remove_role ('link_manager'); 
  2. Lägga till funktioner till roller

    På samma sätt som användarna har roller en särskild klass: WP_Role. Initialiseringen av denna klass kräver dock både rollnamnet och även rollfunktionerna. vilket inte är så användbart.

    WordPress erbjuder en annan funktion get_role () som bara kräver rollnamnet och initierar klassen för dig.

     add_action ('init', 'wptuts_getrole'); funktion wptuts_getrole () $ role = get_role ('editor'); var_dump ($ roll); 

    Det returnerade objektet har två egenskaper och tre metoder.

    WP_Role Egenskaper

    • Förmågor En uppsättning funktioner som rollen har.
    • namn Rollnamnet.

    WP_Role metoder

    • add_cap () Lägg till möjligheten till rollobjektet
    • has_cap () Kontrollera om rollen har kapacitet
    • remove_cap () Ta bort möjligheten från rollen
  3. Kontrollera efter behörigheter

    Roller och förmågor finns där, de gör ingenting. Du bör genomdriva dem i ditt plugin eller tema genom att markera dem innan du kör kod. Du bör alltid kolla efter funktioner istället för roller. En användare med roll som "editor" garanterar inte att han har de standardfunktioner som WordPress tilldelar denna roll eftersom de kan ändras av ett annat plugin eller bloggägaren själv.

    WordPress har 3 funktioner för kontroll av behörigheter, som är utbytbara till viss del.

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

    current_user_can () kontrollerar om den aktuella användaren har angiven kapacitet. Det accepterar också ett inlägg eller objekt för att kontrollera meta-kapacitet.

    user_can () fungerar på samma sätt men du kan ange användar-ID. Det kontrollerar dock inte meta-kapaciteter. Så det är lite saknas om du vill kontrollera en metakapacitet för en annan användare än den nuvarande användaren. För det kan du använda author_can () funktion som kontrollerar om en författare kan utföra en specifik uppgift baserad på en förmåga och post-ID.

     // kontrollerar om postförfattaren till det första inlägget kan publicera posten om (author_can (1, 'publish_posts')) publish_post_function (); // publicera posten else echo "Du har inte rätt att publicera posten"; 

Slutsats

I den här delen försökte jag täcka så mycket funktioner som WordPress har som möjligt, och förklara också när du ska använda varje funktion. Nu borde du kunna skapa ett plugin eller ett tema som använder kapacitetssystemet. I nästa del ska jag visa dig hur man bygger ett plugin som använder det här systemet.