WordPress is_page_template не работает правильно инициализация действия - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть код выше в файле функций моей темы. Я сделал этот код для выхода из системы пользователя «messenger», когда запрашивается другая страница, которая не использует шаблон page_forms.

Но, когда я захожу на страницу, которая использует этот шаблон, меня перенаправляют на домашнюю страницу и сессия закрыта. Что заставляет меня поверить, что оператор is_page_template не работает должным образом.

У кого-нибудь есть какие-либо советы?

function messenger_session(){

    $current = wp_get_current_user();

    if( isset($current->user_login) && $current->user_login == 'messenger' && !is_page_template('page-forms.php') ):

        $redirect_to = get_home_url();

        wp_logout();
        wp_safe_redirect( $redirect_to );
        exit;

    else:
        return;

    endif;
}
add_action('init','messenger_session');

ОБНОВЛЕНИЕ

После исследования, Я решил проблему, изменив 'init' с add_action на 'template_redirect'. В результате этого изменения пользовательский мессенджер будет оставаться в системе на страницах-формах. php.

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

function messenger_login(){

    $current = wp_get_current_user();

    if( is_page_template('page-forms.php') && !isset( $current->user_login ) ) :

        $username = 'messenger';
        $user       = get_user_by( 'login', $username );

        wp_clear_auth_cookie();
        wp_set_current_user( $user->ID );
        wp_set_auth_cookie( $user->ID );
        return;

    elseif( !is_page_template('page-forms.php') && isset( $current->user_login ) && $current->user_login == 'messenger' ):

        $redirect_to = get_home_url();

        wp_clear_auth_cookie();
        wp_safe_redirect( $redirect_to );
        die;

    else:
        // do nothing

    endif;
}

add_action('template_redirect','messenger_login');

И теперь проблема в том, что после входа в мессенджер на страницах-формах. php, выход из системы происходит автоматически с учетом второго оператор функции, где шаблон не должен быть в форме страницы. php для запуска выхода из системы (без перенаправления на дом - это безумие!).

Когда я комментирую функцию wp_clear_auth_cook ie, проблема остановилась. Но эта функция потеряет вашу половинку.

1 Ответ

0 голосов
/ 01 февраля 2020

Эта функция is_page_template работает правильно, просто убедитесь, что вы используете правильный путь к шаблону page_form, если этот шаблон находится внутри какой-либо папки, например folder/page-form.php, тогда вам необходимо использовать этот полный путь после папки вашей темы Предположим, что если ваш шаблон находится в папке templates, то вам необходимо передать templates/page-forms.php в is_page_template function

Дайте мне знать, если это поможет вам

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