【发布时间】:2020-06-23 04:57:36
【问题描述】:
我知道auth_redirect() 检查用户是否登录,如果没有,它会将他们重定向到登录页面,然后在成功时返回上一页。我需要在我的网站上使用该功能,并且我拥有它。
例如,我希望其中一个页面只能由登录用户访问,如果他们试图访问该页面,那么他们需要先登录,然后在成功返回该页面。我的function.php 上有以下代码。
if ( is_page('user_only') && ! is_user_logged_in() ) {
auth_redirect();
}
问题是我有一个自定义登录/注册页面,而不是默认的 WordPress 登录页面,我希望 auth_redirect(); 使用我的自定义登录/注册页面。
auth_redirect(); 正在使用wp-login.php,我想使用我的自定义页面account/index.php。
这可以做到吗?我知道wp_redirect( url, );,但我认为我不需要它,因为它的目的仅用于重定向而不是用于身份验证。
【问题讨论】:
-
如果你检查函数的代码,你会看到它使用
wp_login_url来确定要重定向到的登录 URL,如果你再看一遍,你会看到有一个过滤器命名为login_url,你可以挂钩,修改它。 -
@CBroe - 我检查了
general_template.php然后在wp_login_url()功能上,我已经将wp-login.php更改为自定义登录页面并且它可以工作。不幸的是,它并没有重定向回以前的地址,它只是在帐户页面上并登录。 -
wp_login_url允许您指定成功登录后系统将用户重定向到的 URL,login_url过滤器也将其传入。您所要做的就是将其添加到您的登录 URL 作为查询字符串参数,名为redirect_to -
@CBroe - 你能用代码详细说明吗?在使用我的自定义登录页面更改
general_template.php中wp_login_url()上的wp-login.php函数后,当我转到只有登录用户可以访问的页面时,我会得到这个urlhttp://localhost:5597/website/custom-login/?redirect_to=http%3A%2F%2Flocalhost%3A5597%2Fwebsite%2FuserOnly%2F&reauth=1。如您所见,根据 url,当来自custom-login的身份验证成功时,它应该重定向回userOnly页面。但它不起作用,成功登录后,它只是在custom-login page的个人资料上。 -
那么,当您说您有一个“自定义登录/注册页面”时,这到底是什么意思?您是否只是更改了布局,但它仍在使用默认的 WP 功能?如果没有,并且您在那里自己处理登录或以任何其他主要方式进行干预,它可能不再按预期工作。
标签: php wordpress authentication woocommerce wordpress-theming