wp\\u signon函数可能正按照预期工作。您缺少的是其他身份验证方法,如浏览器cookie,wp\\u signon也会检查这些方法。您的浏览器是否正在向脚本发送WordPress验证cookie?
底线是,您不应该在这里使用wp\\u signon,或者实际上,在任何地方都不应该使用wp\\u signon。请参见,wp\\u signon函数执行整个身份验证堆栈,而不仅仅是简单的用户名和密码检查。人们可以通过提供用户名和密码以外的其他方式进行身份验证,wp\\u signon将对它们进行全部检查,包括插件添加的方法和任何其他挂钩到身份验证过滤器的方法。
wp\\u signon函数用于实际验证WordPress本身,而不是您的脚本。您使用了错误的函数。
如果只想检查用户名和密码,请使用wp_authenticate_username_password
功能。
基本上,从PHP脚本的角度来看,“登录用户”的整个概念实际上没有任何意义。您可以验证用户的凭据,然后只需执行以下操作wp_set_current_user
成为那个用户,但代码实际上可以是它想成为的任何用户。您可以调用wp\\u set\\u current\\u user“成为”任何用户,而无需任何凭据。自定义PHP脚本一开始就具有完全访问权限。
所以,真的,没必要打电话wp_signon
除非您希望a)进行身份验证,然后b)将身份验证cookie发送回用户浏览器。如果您没有主动与用户的浏览器对话,以通过cookie向WordPress验证该浏览器,那么您不需要这样做wp_signon
, 曾经
如果您需要从其他地方验证用户的凭据,那么有许多功能可以做到这一点。您可以使用您喜欢的任何方式验证这些凭据,然后wp\\u set\\u current\\u user成为该特定会话的用户。如果您想让他们永久登录,也可以通过向他们发送身份验证cookie,但您可能希望更直接地登录,而不是通过wp\\u登录。即便如此,如果您正在这样做,那么一种简单得多的方法就是创建一个新的身份验证函数,根据您的检查返回一个有效的WP\\u用户,并将其挂接到authenticate过滤器。然后,用于身份验证的自定义代码变得更加简单。
所以,定义你在做什么。然后人们会给你最好的方法。最好的方法永远不会是亲自打电话给wp\\u signon,永远不会