【问题标题】:wp is_user_logged_in not working on home pagewp is_user_logged_in 在主页上不起作用
【发布时间】:2014-12-13 20:27:03
【问题描述】:

我遇到了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';
}

【问题讨论】:

  • 您确定禁用了正在发生的所有缓存吗?
  • 您在哪里使用此代码?它放在哪个文件中?
  • 我实际上只是注意到,当我以管理员身份登录时,主页/首页也缺少管理栏......我一直专注于让 is_user_logged_in 函数工作,我直到现在才注意到....所以问题不在于功能,WordPress 只是不将我识别为登录用户(仅在主页/首页上),直到我刷新页面。我还禁用了所有插件并切换到二十四主题,仍然是同样的问题。和想法?
  • 你有什么办法解决吗?我也有同样的问题。

标签: php wordpress


【解决方案1】:

使用此代码:

//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;
    }
}

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,当我更改我的 .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文件中是否有效,尝试去浏览器工具->在登录前清除浏览数据并删除所有缓存,应该可以。

    【讨论】:

      【解决方案3】:

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

      我做了一个额外的页面,我在其中使用了 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 )。我以为问题会再次出现,但现在还没有。

      【讨论】:

        【解决方案4】:

        试着把它放在 header.php 中:

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

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

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

        【讨论】:

        • 我已经在本地最新版本的wordpress上测试了你的代码,它也运行良好,你可以试试我的把戏。
        • 我想你可以简单地做$logged = is_user_logged_in();
        • 嗨@MajidKhan,我已经尝试过类似于你的建议的方法,但它仍然不起作用。我遇到的问题是当我登录然后访问主页时,is_user_logged_in 函数显示我已注销,但是一旦我刷新页面,它就会显示我已登录。我假设这是一个缓存问题,但我没有安装任何缓存插件。我正在使用 page-home.php 模板中的代码: if ( is_user_logged_in() ) { echo 'true'; } 其他 { 回声'假'; } 这只会发生在主页上。如果我访问任何内页,我就没有这个问题。
        猜你喜欢
        • 2016-05-05
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-10
        相关资源
        最近更新 更多