Как выполнить некоторый код ДО выхода из системы в WordPress - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь создать пользовательскую страницу выхода для сайта WordPress.

Я отключил wp-login.php, используя следующий код .htaccess.

<Files wp-login.php>
deny from all
</Files>

Если вы получите доступ к этому, вы получите 403 Запрещенный ответ.

Теперь я хочу выполнить функцию «ДО», когда пользователь выйдет из системы.

function execute_this() {
  wp_logout();
}

Дело в том, что все предложения из интернета использует следующий код.

add_action('wp_logout', 'execute_this');

Но этот хук выполняет «ПОСЛЕ» успешного выхода из системы, что в моем случае сделать невозможно, поскольку wp-login.php недоступен.

Именно поэтому я пытаюсь выйти из системы пользователя "ДО", он идет в файл wp-login.php.

Есть ли ловушка / действие, запускающее такой сценарий?

Я также пытался сделать такую ​​вещь (настроить страницу выхода из системы на созданную мной страницу):

add_filter( 'logout_url', 'wpse_58453_logout_url' );
function wpse_58453_logout_url( $default )
{
    return plugin_dir_url(__FILE__) . 'logout.php';
}

Тогда по моему logout.php

require_once('../../../wp-includes/pluggable.php');
wp_logout();

Я знаю, что это неправильный подход, так как выполнение PHP-файла напрямую никогда не является хорошей идеей, плюс я не могу получить доступ к хукам WordPress при выполнении чего-то подобного.

Есть ли способ обойти это?

1 Ответ

1 голос
/ 06 мая 2019

У меня нет опыта работы с WordPress, но на одном из сайтов, которые я поддерживаю, есть собственный URL для выхода из системы (/tp-logout), а тема имеет следующий код для выхода из системы

function tp_custom_logout() {
        if ( is_page( 'tp-logout' ) && is_user_logged_in() ) {
                wp_destroy_current_session();
                wp_clear_auth_cookie();
                $url_logout = home_url();
                wp_redirect( $url_logout );
                exit();
        }
}

add_action( 'template_redirect', 'tp_custom_logout' );

Это выглядит очень похоже на функцию выхода из WP по умолчанию, поэтому не знаю, почему она была добавлена, но, возможно, вы можете добавить свой собственный код, следуя этому подходу.

Я бы вызвал функцию wp_logout(), чтобы сделать фактическийвыйдите из системы, а не скопируйте код (и не вызывая хуков действия wp_logout), чтобы сделать его более дружественным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...