我创建了一个自定义登录页面,与默认登录页面不同。自定义登录页面工作正常,没有任何错误,并在登录到指定页面后重定向。
但是,当用户登录wordpress并且出于任何原因再次尝试查看登录页面时,我需要阻止访问此登录页面。应该将用户重定向到主页或我指定的任何其他页面。我使用了get\\u queryed\\u object()函数返回页面对象的post title元素(在本用例中为“Login”)。
当$page\\u title=“Login”(如下面的代码所示)时,应强制重定向的条件检查没有任何作用,因为即使我登录到站点,我仍然可以访问登录页面。
function redirect_login_page() {
$page_object = get_queried_object();
$page_title = get_queried_object()->post_title;
$login_page = home_url( \'/login/\' );
$home_page = home_url();
$nf_page = home_url(\'404\');
$page_viewed = basename($_SERVER[\'REQUEST_URI\']);
if (!is_user_logged_in() ) {
if( $page_viewed == "wp-login.php" && $_SERVER[\'REQUEST_METHOD\'] == \'GET\') {
wp_redirect($login_page);
exit;
}
}
else
{
if( ($page_viewed == "wp-login.php" or $page_viewed == "login.php" OR $page_title == \'Login\') && $_SERVER[\'REQUEST_METHOD\'] == \'GET\') {
wp_redirect($home_page);
exit;
}
}
}
add_action(\'init\',\'redirect_login_page\');
如何对已登录的用户强制执行此重定向。
最合适的回答,由SO网友:Ihor Vorotnov 整理而成
您应该尽早重定向。最好的钩子是template_redirect. 检查2个条件-如果页面为“登录”且用户已登录:
function redirect_login_page() {
if( is_page( \'login\' ) && is_user_logged_in() ) {
wp_redirect( home_url() );
exit;
}
}
add_action( \'template_redirect\', \'redirect_login_page\' );