Wenn ich dies tun müsste, würde ich mein eigenes Cookie verwenden, um die Anmeldung zu bestimmen, und WordPress nur laden, um es bei Bedarf zu überprüfen.
Das Cookie wordpress_logged_in_ {some-hash} kann verwendet werden, um den Benutzer zu bestimmen, und WordPress verwendet es, um denselben zu bestimmen. Sie können dies nicht einfach erneut implementieren, aber Sie können es verwenden, ohne WordPress bei mehreren Anforderungen zu laden.
Hier ist zum Beispiel mein Cookie-Hash (vollständig erfundene Daten, aber realistisch):
key: wordpress_logged_in_1234567890abcdef1234567890abcdef
value: admin|1234567890|abcdef1234567890abcdef1234567890
Die Art und Weise, wie WordPress weiß, wie dieses Cookie gültig ist, spielt keine Rolle. Sie müssen lediglich wissen, ob es einmal gültig ist, und dann unterschreiben Sie es mit einem Geheimnis.
Zum ersten Mal ist der Benutzer also noch nicht bewiesen. Sie laden wp-load.php und WP validiert das Cookie und meldet den Benutzer an. Sie tun nun alles, um sich selbst zu beweisen, dass der Benutzer angemeldet ist, und setzen dann Ihr eigenes Cookie. Der Schlüssel kann alles sein, was für Sie benutzerdefiniert ist, der Wert, den Sie mit einem geheimen Schlüssel mithilfe der Funktion hash_hmac in einen Message Digest umwandeln.
$key = ... // the key from the WP cookie
$value = ... // the value from the WP cookie
$hash = hash_hmac ( 'md5' , $key.$value , 'some secret key' );
Sie erhalten Kauderwelsch zurück, das Sie mit setcookie () an sie zurücksenden. Bei zukünftigen Anfragen senden sie diesen Cookie an Sie zurück. Sie können dies zuerst überprüfen und mit derselben Hash-Funktion und demselben geheimen Schlüssel validieren.
Nur Sie können den Hash generieren, da nur Sie den geheimen Schlüssel kennen. Wenn sie also einen gültigen Hash zurücksenden, der auch mit dem übereinstimmt, was sie für ihr WP-Cookie senden, wissen Sie, dass sie zuvor über Ihren Code mit WP validiert wurden, und Sie können den Benutzernamen direkt von diesem Wert abrufen (es ist der erste offensichtlich ein Teil des Cookies). Dann müssen Sie WP nicht laden.
Der geheime Schlüssel BTW sollte lang und zufällig sein . Kein kurzes Passwort. Kein Wörterbuchwort. Nur großer unsinniger Kauderwelsch. Leitungsrauschen und viel davon. Beispielschlüssel:
'GHY5hFNqq4Ntdu=3:SUp8#/+_W!- @@^@xslN*L|N+Vn;(1xo8jNyp,au$v9Ki5*'