IS_USER_LOGGED_IN()和GET_CURRENT_USER_ID()的奇怪行为

时间:2020-02-15 作者:warm__tape

我有个问题is_user_logged_in() 似乎在真与假之间交替出现。

此外,get_current_user_id() 提供正确的用户ID,如果is_user_logged_in() 是真的。

这是我的代码:

。htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^wp-content/uploads/(.*)$ file-access.php?file=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
文件访问。php:

require_once(\'wp-load.php\');

if ( is_user_logged_in() ) {
    // User is logged in, proceed.
} else {
    // User is a guest, block.
}
我已经在file-access.php 条件。

我是否需要调用wp load以外的其他内容。也许是php?我只是觉得奇怪,它在真与假之间交替,而不是总是假的。。。

编辑添加:我还遇到了一个问题,我测试的一个文件没有上传为https版本,这导致了问题。

2 个回复
最合适的回答,由SO网友:Andrea Somovigo 整理而成

我已经运行了你的代码,除了包含在文件访问中之外,它对我来说运行得很好。php:

require_once($_SERVER[\'DOCUMENT_ROOT\'].\'/wp-load.php\'); 启用调试以查看是否存在错误,这取决于其他问题,而不是这些特定代码行。

但是根据WP文件:actions reference 完成身份验证过程并设置cookie的早期操作挂钩是init 如中所述@Mohsin 所以我建议在文件访问中使用此代码。php

/* you probably don\'t need a theme */ 
define( \'WP_USE_THEMES\', false ); 

/* defining a constant here allows you to exit functions when not needed */
define(\'FROM_EXTERNAL_FILE\',true);

/* unless you\'ve renamed your wp-content folder this path will always point to wp-load.php even in subfolders installations */
require_once(explode("wp-content", __FILE__)[0] . "wp-load.php");
并移动签入文件函数。通过WP load加载整个WP环境的php。php

function is_logged_function(){
  if ( !defined (\'FROM_EXTERNAL_FILE\') )
    return;
  if ( is_user_logged_in()){
    echo "logged";
    echo get_current_user_id();
  }
  else{
    echo "not logged";
  }
}
add_action(\'init\', \'is_logged_function\');

SO网友:Mike

通常被调用以启动Wordpress安装程序的文件是wp blog header。php,所以可以尝试换掉wp-load.php 对于wp-blog-header.php 在代码中,然后重新测试

相关推荐

HTAccess和WordPress配置文件经常被覆盖

我有一个WordPress网站(v5.2.3),并且偶尔(可能每月)有wp-config.php 和.htaccess 文件被错误信息覆盖。这会导致两个问题-首先是数据库访问详细信息wp-config 更改为不起作用的内容,然后由于信息丢失,访问我的帖子链接永久链接的能力将丢失htaccess.被覆盖后,我的wp-config 文件中充满了这样的行:file_put_contents(\"wp-remote-upload.php\", base64_decode(\'PD9waHANCmVjaG8gIlR