Требовать, чтобы пользователь вошел в систему не работает для гравитационной формы, хотя пользователь вошел в 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');