登录用户尝试访问受限制的页面时需要重新登录

时间:2013-05-04 作者:Bill Phelps

我需要根据user\\u元字段限制对某些前端页面的访问。

所有这些都可以正常工作,除非用户已登录但凭据错误。在这种情况下,我希望他们被重定向到登录表单(带有一条消息,鼓励他们注销并使用合适的凭据再次登录-我可以做到这一点)。

相反,用户最终会收到“以一种永远不会完成的方式重定向”消息。

我认为我的代码中唯一与此问题相关的部分是:

if(!$user_is_approved) {
    wp_redirect(wp_login_url( get_permalink() ));
    exit;
}
实现这一目标的最佳方式是什么?

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

多亏了@s\\u ha\\u dum,我最终在我的wp-config.php 文件

@define(\'ADMIN_COOKIE_PATH\', \'/\');
对此进行评论解决了问题

具有讽刺意味的是,我倾向于将这一行作为防止登录重定向循环的标准预防措施。(我不记得我第一次从哪里得到这个,但在这个话题上有一些激烈的辩论here.) 我想这说明了在没有真正理解咒语的情况下使用咒语的危险性。。

SO网友:s_ha_dum

当你说用户“登录时使用的凭据错误”时,我不得不假设你的意思是“用户登录时使用的凭据正确,但没有访问页面所需的权限”。如果用户能够使用错误的凭据登录,您的站点将严重受损。

重定向本身不会导致您描述的错误。通过将以下内容粘贴到主题的header.php:

wp_redirect(wp_login_url( get_permalink() ));
exit;
任何试图访问前端页面的尝试都将重定向,但没有无限的重定向循环。问题一定是你把代码放在哪里了,而你没有包括这些信息。我希望您在某个地方有它——可能有一个钩子——可以加载登录页面,这样当重定向开始时,它就不会停止(直到浏览器放弃)。解决这个问题可能会解决眼前的问题。

我想知道为什么要使用用户元字段而不是capability, 虽然我不明白为什么内置权限系统不能处理这个问题。

结束

相关推荐

How to change the login URL

我想根据客户端请求更改登录URL。所以,不是mysite。com/wp登录。php或mysite。com/wp管理员这就是我的网站。com/someotherpagename。php或mysite。com/someotherpagename我不想使用/登录。根据客户的说法,这太明显了。提前谢谢。