4

在 WordPress 项目中,我在前端使用登录。我已经包含了插件重力形式。其中一个页面(例如 abc)的表单设置为“要求用户登录”。

问题:当我第一次登录并转到页面 abc 时,表单显示(因为用户已登录)但是当我第一次转到页面 abc 然后登录时,尽管用户已登录,但表单未显示(仅当我刷新页面)。为什么会这样?

if($("body").hasClass("logged-in"))用来检查用户是否登录。

欢迎任何帮助/建议。我在应用程序中的“检查”期间注意到的一件事是一个特定的 cookie wordpress_456b46f4d1347f23495548c111992d89,其路径/wp-content/plugins最初并未在登录后以重力形式加载到页面中。它在刷新之后出现。我对这个 cookie 感到困惑。

4

2 回答 2

2

您可以为您的项目使用 Wordpress 默认功能:

<?php if(!is_user_logged_in()) { ?>
// code Require user to be logged in
<?php } else { ?>
// Your code
<?php } ?>
于 2019-01-31T04:20:34.723 回答
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');
于 2019-01-31T10:29:54.627 回答