Якщо ви коли-небудь працювали над проектом, коли вам потрібно було працювати з автентифікаційними файлами cookie WordPress, то, ймовірно, ви натрапили на функцію wp_set_auth_cookie. Коротше кажучи, ця функція :
Встановлює автентифікаційний ідентифікатор користувача на основі файлів cookie.
І коли ви використовуєте цю функцію, ви, по суті, створюєте файл cookie, який використовується для автентифікації користувача для входу в WordPress.
Але якщо ви бажаєте програмно автентифікувати користувача за допомогою WordPress, для цього необхідно виконати кілька додаткових кроків, особливо якщо ви працюєте з плагінами для кешування.
І тут у гру вступають кеші користувачів WordPress.
Кеш користувача WordPress
Окрім простого створення файлу cookie для автентифікації, важливо переконатися, що ви виконуєте такі дії:
- очистити кеші користувачів,
- позбутися автентифікаційних файлів cookie,
- встановити поточного користувача,
- встановити файл cookie для автентифікації,
- оновити кеші користувачів.
Це звучить як складне рішення, чи не так? Приємно те, що є кілька функцій (посилання на які наведено вище), які роблять це дуже легким.
Важливо пам’ятати, що вам потрібен екземпляр WP_User, щоб зробити все це. Спосіб отримання екземпляра користувача залежатиме від функціональності вашого плагіна.
Тобто, можливо, ви зможете отримати посилання для користувача з таким іменем :
<?php
$user = get_user_by( 'login', $username );
Або, можливо, у вас є електронна адреса, якою ви можете скористатися :
<?php
$user = get_user_by( 'email', $email );
У будь-якому випадку, наступні кроки повинні мати користувача, якщо ви хочете зробити це належним чином. Отже, ось як може виглядати код :
<?php
// Clean out any cookies and cookies for an existing user.
clean_user_cache( $user->ID );
wp_clear_auth_cookie();
// Set the current user and update the caches.
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID, true, false );
update_user_caches( $user );
І це все! Отже, ось опис того, що робить кожна функція:
- clean_user_cache. Це видалить всю кешовану інформацію про користувачів.
- wp_clear_auth_cookie. Коли користувач проходить автентифікацію за допомогою WordPress, зберігається файл cookie. Це видалить файл cookie для автентифікації.
- wp_set_current_user. Враховуючи екземпляр WP_User, скажіть WordPress позначити цього користувача (дозволяючи його/вона існування в базі даних)
- wp_set_auth_cookie. Це створить файл cookie, який використовується для автентифікації користувача, щойно встановлений у попередній функції.
- update_user_caches. Нарешті, це оновить кеші користувачів інформацією з новими роками.
Коли справа доходить до роботи з кешуванням користувачів WordPress, автентифікацією та просуванням програмної автентифікації користувачів, це функції, які слід використовувати.