Si je devais le faire, j'utiliserais mon propre cookie pour déterminer la connexion et ne chargerais WordPress que pour vérifier si nécessaire.
Le cookie wordpress_logged_in_ {some-hash} peut être utilisé pour déterminer l'utilisateur, et WordPress l'utilise pour le déterminer. Vous ne pouvez pas facilement réimplémenter cela, mais vous pouvez l'utiliser sans charger WordPress sur plusieurs demandes.
Par exemple, voici mon hachage de cookie (données entièrement constituées, mais réalistes):
key: wordpress_logged_in_1234567890abcdef1234567890abcdef
value: admin|1234567890|abcdef1234567890abcdef1234567890
La façon dont WordPress sait comment ce cookie est valide n'est pas pertinente, tout ce que vous devez savoir est de savoir s'il est valide une fois, puis vous le signez avec un secret.
Donc, la première fois, l'utilisateur n'a pas encore fait ses preuves. Vous chargez wp-load.php et WP valide le cookie et connecte l'utilisateur. Vous faites maintenant tout ce que vous faites pour vous prouver que l'utilisateur a été connecté, puis vous définissez votre propre cookie. La clé peut être quelque chose de personnalisé pour vous, la valeur que vous faites dans un résumé de message avec une clé secrète en utilisant la fonction 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' );
Vous récupérerez du charabia, que vous leur renvoyez en utilisant setcookie (). Lors de futures demandes, ils vous renverront ce cookie. Vous pouvez d'abord vérifier cela et le valider en utilisant la même fonction de hachage et la même clé secrète.
Vous seul pouvez générer le hachage car vous seul connaissez la clé secrète. Donc, s'ils renvoient un hachage valide qui correspond également à ce qu'ils envoient pour leur cookie WP, vous savez qu'ils ont déjà été validés avec WP, via votre code, et vous pouvez obtenir le nom d'utilisateur directement à partir de cette valeur (c'est le premier partie du cookie, évidemment). Ensuite, vous n'avez pas à charger WP.
La clé secrète, BTW, doit être longue et aléatoire . Pas un mot de passe court. Pas un mot du dictionnaire. Juste un gros charabia absurde. Du bruit de ligne, et beaucoup. Exemple de clé:
'GHY5hFNqq4Ntdu=3:SUp8#/+_W!- @@^@xslN*L|N+Vn;(1xo8jNyp,au$v9Ki5*'