Вопрос или проблема
Я хочу выйти из системы пользователя, если он нажимает на ссылку на странице выхода (например, example.com/logout). Мне нужно сделать это, потому что моим пользователям сайта не разрешено доступ к странице wp-login.php. У меня есть страница входа, но нет страницы выхода.
Как я могу сделать кастомную страницу в качестве ссылки для выхода? С шорткодом или без шорткода.
Да, мы создаем кастомную страницу в качестве ссылки для выхода следующим образом: добавьте это в файл function.php
add_action( 'init', 'log_out_user' );function log_out_user() {
global $wp;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //получить url текущей страницы
if(!empty(get_current_user_id()) && $url == 'example.com/logout' ) //проверить, вошел ли пользователь в систему и текущий url страницы
{
wp_logout(); //это выйдет пользователя
$siteUrl = site_url(); //получить url сайта
wp_redirect($siteUrl);//добавьте это, если хотите перенаправить на url сайта после выхода
}}
Ответ или решение
Чтобы реализовать выход пользователя по нажатию на кастомную ссылку (например, example.com/logout) в WordPress, вам нужно внести некоторые изменения в файл functions.php вашей темы. Это позволит вам создавать нестандартные страницы для выхода, что особенно полезно, если у вас есть пользовательская страница входа и вы хотите ограничить доступ к стандартной странице wp-login.php.
Вот подробное руководство по созданию такой функциональности:
Шаг 1: Внесите изменения в файл functions.php
Откройте файл functions.php
вашей активной темы и добавьте следующий код:
add_action( 'init', 'log_out_user' );
function log_out_user() {
global $wp;
$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // Получаем текущий URL
// Проверяем, авторизован ли пользователь и совпадает ли URL с нашей кастомной страницей выхода
if (!empty(get_current_user_id()) && $url == 'http://example.com/logout') {
wp_logout(); // Выполняем выход пользователя
$siteUrl = site_url(); // Получаем URL сайта
wp_redirect($siteUrl); // Перенаправляем на главную страницу после выхода
exit(); // Завершаем выполнение скрипта
}
}
Шаг 2: Создание кастомной страницы выхода
- Создайте новую страницу в админ-панели WordPress, назовите её, например, "Выход".
- Не добавляйте никакого контента на эту страницу, так как она будет использоваться только для выхода из системы.
- Опубликуйте страницу и обратите внимание на её URL.
Шаг 3: Активация кода
Теперь, когда пользователь перейдет по адресу http://example.com/logout
, он будет автоматически выходить из системы, и его перенаправит на главную страницу сайта.
Примечания
- Убедитесь, что вы заменили
example.com
в коде на ваш фактический домен. - Использование
exit();
после перенаправления критично, чтобы предотвратить дальнейшее выполнение кода. - Следите за тем, чтобы пользователи не могли случайно выйти из системы без необходимости, так как это может вызвать неудобства.
Данная реализация позволяет создать удобный и безопасный способ выхода из системы для ваших пользователей, соответствующий требованиям вашего проекта. Вы можете дополнительно настроить редиректы или сообщения, если это будет необходимо в зависимости от ваших бизнес-требований.