wp is_user_logged_in无法在主页上工作

时间:2014-12-13 20:27:03

标签: php wordpress

我遇到了" is_user_logged_in()"的问题。并希望得到一些帮助.... 主网站网址为http://www.thecuriosityworkshop.com 我使用is_user_logged_in()将某些内容回显给已登录的用户,并且它在内部页面中都能正常工作,但不能在主页上工作。即使我以管理员身份登录并访问主页,is_user_logged_in()显示" false",但当我转到任何内页时,is_user_logged_in()显示" true"。知道发生了什么吗?

为了测试我只是做以下事情:

if ( is_user_logged_in() ) {
echo 'true';
} else {
echo 'false';
}

4 个答案:

答案 0 :(得分:0)

使用此代码:

//variable for check user logged in
$isUserLogged = false;

//Checks if the current visitor is a logged in user.
if ( !function_exists('is_user_logged_in') ) {

$user = wp_get_current_user();

    if ( !empty($user->ID) ) {
       $isUserLogged = true;
    }

} else {

    if ( is_user_logged_in() ) {
        $isUserLogged = true;
    }
}

答案 1 :(得分:0)

我遇到了同样的问题,当我更改.htaccess文件以禁用所有缓存时,它解决了该问题。这是我为此找到的最佳代码:

    #prevent caching
    <filesMatch "\.(html|htm|js|css)$">
     FileETag None
     <ifModule mod_headers.c>
      Header unset ETag
      Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
      Header set Pragma "no-cache"
      Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </ifModule>
  </filesMatch>

以上代码是否可在您的.htacess文件中运行,请尝试使用浏览器工具->清除浏览数据并在登录之前删除所有缓存,这应该做到。

答案 2 :(得分:0)

我浏览了很长时间,停留在这个。

我制作了一个额外的页面,其中使用了 WordPress 身份验证。

基本上就是这样:

https://example.org/vips-only/login.php

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
defined( 'ABSPATH' ) or die( 'This page cannot be accessed directly.' );

if( is_user_logged_in() ){
  echo 'You are logged in, mate';
} else {
  $redirect_to = get_site_url() . '/vips-only/welcome.php';
  wp_login_form([
    'redirect' => $redirect_to
  ]);
}

出于某种原因,我无法让 is_user_logged_in() 工作。即使我第一次通过“真正的”WordPress 登录表单(而不是我设置的自定义表单)登录。

为我解决的问题是创建一个新文件并复制其中的所有内容,例如:https://example.org/vips-only/new-login.php。我不知道为什么这有效,但确实有效。

这可能与 cookie 相关。它可能与插件有关(我使用的是 WPS Hide Login )。我以为问题会再次出现,但还没有。

答案 3 :(得分:-1)

尝试将其放入 header.php

if ( is_user_logged_in() ) {
    $logged = TRUE
} else {
    echo 'false';
    $logged = FALSE
}

然后在任何内容上添加此条件:

if($logged) {
    echo 'Logged in';
} else {
    echo 'not logged in'; 
}