Gdybym musiał to zrobić, użyłbym własnego pliku cookie w celu ustalenia loginu i załadowałem WordPress tylko w razie potrzeby.
Plik cookie wordpress_logged_in_ {some-hash} może służyć do określania użytkownika, a WordPress używa go do określania tego samego. Nie możesz tego łatwo ponownie zaimplementować, ale możesz go użyć bez ładowania WordPressa na wiele żądań.
Na przykład, oto mój skrót do plików cookie (całkowicie złożone dane, ale realistyczne):
key: wordpress_logged_in_1234567890abcdef1234567890abcdef
value: admin|1234567890|abcdef1234567890abcdef1234567890
Sposób, w jaki WordPress wie, jak ważny jest ten plik cookie, jest nieistotny, wszystko, co musisz wiedzieć, to czy jest on ważny raz, a następnie podpisujesz go w tajemnicy.
Po raz pierwszy użytkownik nie został jeszcze sprawdzony. Wczytujesz wp-load.php, a WP sprawdza poprawność pliku cookie i loguje użytkownika. Teraz robisz wszystko, aby udowodnić sobie, że użytkownik jest zalogowany, a następnie ustawiasz własny plik cookie. Klucz może być dowolny dla Ciebie, wartość jaką tworzysz w skrócie wiadomości za pomocą tajnego klucza za pomocą funkcji 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' );
Wrócisz bełkotem, który odeślesz im za pomocą setcookie (). W przypadku przyszłych wniosków wyślą z powrotem ten plik cookie. Możesz to najpierw sprawdzić i zweryfikować, używając tej samej funkcji skrótu i tajnego klucza.
Tylko Ty możesz wygenerować skrót, ponieważ tylko Ty znasz tajny klucz. Więc jeśli odeślą poprawny skrót, który również pasuje do tego, co wysyłają dla jego pliku cookie WP, to wiesz, że zostały sprawdzone za pomocą WP, za pomocą Twojego kodu, i możesz uzyskać nazwę użytkownika bezpośrednio z tej wartości (jest to pierwsza część ciasteczka, oczywiście). Wtedy nie musisz ładować WP.
Tajny klucz, BTW, powinien być długi i losowy . Nie krótkie hasło. Nie słownika. Po prostu duży bezsensowny bełkot. Hałas na linii i wiele innych. Przykładowy klucz:
'GHY5hFNqq4Ntdu=3:SUp8#/+_W!- @@^@xslN*L|N+Vn;(1xo8jNyp,au$v9Ki5*'