Контроль входа пользователя программно в WordPress - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь создать страницу формы в 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');

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

У кого-то есть идея, как это исправить?

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