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