Я пытаюсь создать страницу формы в WordPress, где любой человек может сделать сообщение. Чтобы использовать некоторые функции, такие как загрузка изображений, обязательно, чтобы пользователь оставался в системе. В качестве решения я создаю простую функцию, которая проверяет, является ли запрашиваемая страница той же формы, и если какой-либо пользователь вошел в систему.
Проблема заключается во второй части функции, в которой мне нужно выйти из системы моего анонимного пользователя (мессенджера), чтобы доставить исходный опыт пользователю на других страницах веб-сайта.
Функция:
function messenger_login(){
$username = 'messenger';
if( is_page_template('page-forms.php') && !is_user_logged_in() ) :
$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') && is_user_logged_in() ):
$user = wp_get_current_user();
if( $user->user_login === $username ):
$redirect_to = get_home_url();
wp_clear_auth_cookie();
wp_safe_redirect( $redirect_to );
die;
endif;
else:
// do nothing
endif;
}
Вызов функции (гипотезы и результаты):
ничего не происходит:
add_action('init','messenger_login');
add_action('wp_enqueue','messenger_login');
пользователь вошел в систему и вышел из системы в последовательности
add_action('wp','messenger_login');
add_action('template_redirect','messenger_login');
add_action('get_header','messenger_login');
В тех случаях, когда пользователь входит в систему и выходит из нее последовательно, я считаю, что это происходит, потому что вызывается какой-то новый запрос .
У кого-то есть идея, как это исправить?