Якби мені довелося це робити, я використовував би власний файл cookie, щоб визначити логін та завантажувати WordPress лише для того, щоб перевірити, коли це необхідно.
Файл cookie wordpress_logged_in_ {some-hash} можна використовувати для визначення користувача, а WordPress використовує його для визначення того ж. Ви не можете легко повторно реалізувати це, але ви можете використовувати його, не завантажуючи WordPress на кілька запитів.
Наприклад, ось мій хеш-файл cookie (повністю складені дані, але реалістичні):
key: wordpress_logged_in_1234567890abcdef1234567890abcdef
value: admin|1234567890|abcdef1234567890abcdef1234567890
Те, як WordPress знає, як цей файл cookie дійсний, не має значення, все, що вам потрібно знати, - чи дійсний він один раз, тоді ви підписуєте його з секретом.
Отже, перший раз користувач ще не доведений. Ви завантажуєте wp-load.php та WP, перевіряє файл cookie та реєструє користувача. Тепер ви робите все, що ви робите, щоб довести, що користувач увійшов у систему, а потім встановите власний файл cookie. Ключ може бути для вас будь-яким іншим, значення, яке ви вносите в дайджест повідомлення за допомогою секретного ключа за допомогою функції 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' );
Ви отримаєте зворотній зв'язок, який ви надішлете їм за допомогою setcookie (). На майбутні запити вони надішлють вам це cookie. Ви можете перевірити це спочатку та перевірити його, використовуючи ту саму хеш-функцію та секретний ключ.
Тільки ви можете генерувати хеш, тому що тільки ви знаєте секретний ключ. Тож якщо вони відправляють назад дійсний хеш, який також відповідає тому, що вони надсилають для файлу cookie WP, то ви знаєте, що раніше вони були перевірені WP, через ваш код, і ви можете отримати ім’я користувача прямо з цього значення (це перше частина печива, очевидно). Тоді вам не доведеться завантажувати WP.
Секретний ключ, BTW, повинен бути довгим і випадковим . Не короткий пароль. Не словникове слово. Просто великі безглузді хитрощі. Шум лінії, і багато його. Приклад ключа:
'GHY5hFNqq4Ntdu=3:SUp8#/+_W!- @@^@xslN*L|N+Vn;(1xo8jNyp,au$v9Ki5*'