答案需要一点WP取证,因为此功能自1.5版起就在WordPress中,但在此过程中发生了一些变化。但是,有一点没有改变,那就是描述“检查用户是否登录,如果没有,它会将用户重定向到登录页面。”
我认为从技术上来说应该是这样的。在最初的迭代中,它做到了。
然而,引入了一些糟糕的条件逻辑,使其无法正常工作。在WP(4.1.1)的当前版本中,问题(或其中一个)是这一行:
if ( $user_id = wp_validate_auth_cookie( \'\', $scheme) ) {
由于单个“=”,此比较逻辑不起作用。它应该做的是将$user\\u id与返回的wp\\u validate\\u auth\\u cookie()值进行比较,如果用户登录,该值将返回用户id。
但这并不像修复逻辑那么简单。如果查看函数,$user\\u id未定义。我怀疑它应该是一个全局变量,但我不确定。
我回顾了这个函数的历史,看看这个问题是何时引入的,并发现它出现在2.7中。多年来,这一直是函数的一个问题。在此更改之前,逻辑只是测试从wp\\u validate\\u auth\\u cookie()返回的有效(非false)值,而不是将该值与登录用户的用户ID进行比较。
我认为修复比较逻辑并添加全局$user\\u id可能是纠正函数问题的解决方案。我将对此进行测试,并将此作为建议的修复提交。