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

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

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

я использую if($("body").hasClass("logged-in")) проверить, вошел ли пользователь в систему или нет.

Любая помощь / предложения приветствуются.
Одна вещь, которую я заметил во время «проверки» в приложении, — это специальный cookie
wordpress_456b46f4d1347f23495548c111992d89 с путем как /wp-content/plugins изначально не загружается на страницу с гравитационной формой после входа в систему. Это приходит после обновления. Я запутался в отношении этого файла cookie.

4

Решение

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

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

Другие решения

Добавьте это в 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');
2

По вопросам рекламы [email protected]