Если вы когда-либо работали над проектом, когда вам нужно работать с файлами 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 );
Вот и все! Итак, вот описание того, что делает каждая функция:
- чистый_пользователь_кэш. Это удалит всю кэшированную информацию о пользователях.
- wp_clear_auth_cookie. Когда пользователь проходит аутентификацию в WordPress, сохраняется файл cookie. Это удалит этот файл cookie аутентификации.
- wp_set_current_user. Учитывая экземпляр WP_User, скажите WordPress пометить этого пользователя (разрешив, что он / она существует в базе данных)
- wp_set_auth_cookie. Это создаст файл cookie, используемый для аутентификации пользователя, который был только что установлен в предыдущей функции.
- update_user_caches. Наконец, это обновит пользовательские кеши информацией о новых годах.
Когда дело доходит до работы с кэшированием пользователей WordPress, аутентификацией и переходом к программной аутентификации пользователей, следует использовать эти функции.