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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Добавьте это в 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');
0 голосов
/ 31 января 2019

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

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