У меня есть код выше в файле функций моей темы. Я сделал этот код для выхода из системы пользователя «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, проблема остановилась. Но эта функция потеряет вашу половинку.