Требовать, чтобы пользователь вошел в систему не работает для гравитационной формы, хотя пользователь вошел в WordPress

В проекте WordPress я использую логин в веб-интерфейсе. Я включил плагин Gravity form. Одна из страниц (например, abc) имеет форму с настройкой формы "Требовать входа пользователя в систему".

Проблема: Когда я впервые захожу и захожу на страницу abc, отображается форма (когда пользователь вошел в систему), но когда я впервые захожу на страницу abc, а затем выполняю вход, хотя пользователь вошел в форму, не отображается (она отображается только если я обновите страницу). Почему это происходит?

Я использую if($("body"). HasClass("вошел в систему")), чтобы проверить, вошел ли пользователь в систему или нет.

Любая помощь / предложения приветствуются.

0 ответов

Вы можете использовать функцию Wordpress по умолчанию для вашего проекта:

<?php if(!is_user_logged_in()) { ?>
// code Require user to be logged in
<?php } else { ?>
// Your code
<?php } ?>

Добавьте это в JS-файл, который отображается на странице формы (проверьте логин пользователя, как показано ниже)

<script>
var data = {  action: 'is_user_logged_in' };

jQuery.post(ajaxurl, data, function(response) {
    if(response == 'yes') {
        // user is logged in,
    } else {
        // user is not logged in,
    }
});
</script>

Добавьте это в functions.php активной темы.

function check_user_logged_in() {
    echo is_user_logged_in()?'yes':'no';
    die();
}
add_action('wp_ajax_nopriv_is_user_logged_in', 'check_user_logged_in');
Другие вопросы по тегам