Vad är WordPress-användarcacher?
Om du någonsin har arbetat med ett projekt när du behöver arbeta med WordPress-autentiseringscookies, har du troligen snubblat över funktionen wp_set_auth_cookie. Kort sagt, denna funktion :
Ställer in autentiseringscookies baserade användar-ID.
Och när du använder den här funktionen skapar du i princip en cookie som används för att autentisera användaren för att logga in på WordPress.
Men om du vill autentisera en användare med WordPress programmatiskt, så krävs det några extra steg för att göra det ordentligt, särskilt om du arbetar med caching-plugins.
Och det är där WordPress-användarcacher kommer in i bilden.
WordPress användarcacher
Förutom att bara skapa en autentiseringscookie är det viktigt att se till att du gör följande:
- rensa användarens cacheminne,
- bli av med autentiseringscookies,
- ställ in en aktuell användare,
- ställ in autentiseringscookien,
- uppdatera användarens cacheminne.
Det låter som en komplicerad lösning, eller hur? Det fina är att det finns en handfull funktioner (länkat ovan) som gör detta riktigt enkelt.
Det viktiga att komma ihåg är att du behöver en instans av WP_User för att kunna göra allt detta. Hur du hämtar en instans av användaren beror på funktionen hos din plugin.
Det vill säga att du kanske kan hämta en referens för en användare som fått ett användarnamn :
<?php
$user = get_user_by( 'login', $username );
Eller så kanske du har en e-postadress som du kan använda :
<?php
$user = get_user_by( 'email', $email );
Hur som helst måste följande steg ha en användare om du ska göra detta korrekt. Så med det sagt, så här kan koden se ut :
<?php
// Clean out any cookies and cookies for an existing user.
clean_user_cache( $user->ID );
wp_clear_auth_cookie();
// Set the current user and update the caches.
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID, true, false );
update_user_caches( $user );
Och det är allt! Så här är beskrivningen av vad varje funktion gör:
- clean_user_cache. Detta tar bort all cachad användares information.
- wp_clear_auth_cookie. När en användare är autentiserad med WordPress finns det en cookie som lagras. Detta tar bort den autentiseringskakan.
- wp_set_current_user. Med tanke på en instans av WP_User, säg åt WordPress att markera denna användare (som tillåter att han/hon finns i databasen)
- wp_set_auth_cookie. Detta kommer att skapa den cookie som används för autentisering för användaren som precis ställdes in i föregående funktion.
- update_user_caches. Slutligen kommer detta att uppdatera användarcacharna med informationen med de nya åren.
När det gäller att arbeta med WordPress-användarcache, autentisering och att gå vidare med programmatiskt autentisering av användare, är det dessa funktioner som bör användas.