Se dovessi farlo, utilizzerei il mio cookie per determinare il login e caricare WordPress solo per controllare quando necessario.
Il cookie wordpress_logged_in_ {some-hash} può essere utilizzato per determinare l'utente e WordPress lo utilizza per determinare lo stesso. Non è possibile reimplementarlo facilmente, ma è possibile utilizzarlo senza caricare WordPress su più richieste.
Ad esempio, ecco il mio cookie hash (dati completamente inventati, ma realistico):
key: wordpress_logged_in_1234567890abcdef1234567890abcdef
value: admin|1234567890|abcdef1234567890abcdef1234567890
Il modo in cui WordPress sa quanto sia valido quel cookie è irrilevante, tutto ciò che devi sapere è se è valido una volta, quindi lo firmi con un segreto.
Quindi, la prima volta, l'utente non è ancora stato provato. Carichi wp-load.php e WP convalida il cookie e accede l'utente. Ora fai tutto ciò che fai per dimostrare a te stesso che l'utente è stato loggato, quindi imposti il tuo cookie. La chiave può essere qualcosa di personalizzato per te, il valore che crei in un digest del messaggio con una chiave segreta usando la funzione hash_hmac.
$key = ... // the key from the WP cookie
$value = ... // the value from the WP cookie
$hash = hash_hmac ( 'md5' , $key.$value , 'some secret key' );
Tornerai senza parole, che rispedirai loro usando setcookie (). Su richieste future, ti rispediranno questo cookie. Puoi verificarlo prima e convalidarlo usando la stessa funzione hash e la chiave segreta.
Solo tu puoi generare l'hash perché solo tu conosci la chiave segreta. Quindi, se restituiscono un hash valido che corrisponde anche a quello che inviano per il loro cookie WP, allora sai che sono stati convalidati con WP, tramite il tuo codice, in precedenza, e puoi ottenere lo username proprio da quel valore (è il primo parte del cookie, ovviamente). Quindi non è necessario caricare WP.
La chiave segreta, a proposito, dovrebbe essere lunga e casuale . Non una password breve. Non una parola del dizionario. Solo grandi sciocchezze senza senso. Rumore di linea e molto altro. Chiave di esempio:
'GHY5hFNqq4Ntdu=3:SUp8#/+_W!- @@^@xslN*L|N+Vn;(1xo8jNyp,au$v9Ki5*'