无论何时我进入https://mydomain/wp-admin未登录时,我被重定向到
wp-login.php?redirect_to=https%3A%2F%2Fmydomain%2Fwp-admin%2F&reauth=1
在一些帮助下,我创建了以下代码来重定向登录到wp的用户。要转发到所需自定义页面的php url:
function redirect_wp_login_to_custom_login() {
global $pagenow;
$redirect_to;
$current_url = home_url ($_SERVER [\'REQUEST_URI\']);
if (\'wp-login.php\' == $pagenow) {
if (!is_user_logged_in ())
$redirect_to = get_home_url () . \'/login/\';
else {
if (is_super_admin() || is_admin())
$redirect_to = get_home_url () . \'/wp-admin/\';
else
$redirect_to = get_home_url () . \'/startseite/\';
}
wp_safe_redirect ($redirect_to);
exit;
}
else {
global $wp;
$login_url = get_home_url () . \'/login/\';
if (!strcasecmp ($login_url, $current_url) && is_user_logged_in ()) {
$redirect_to = get_home_url () . \'/user-profile/\';
//wp_safe_redirect ($redirect_to);
exit;
}
}
}
但是,当输入正确的用户凭据并单击;“登录”;按钮在我的自定义登录表单中,我似乎被转发到wp登录。php。这使得我的上述函数将我重定向到自定义登录表单,因为显然在单击;“登录”;我尚未登录。我如何解决这个问题(除了编写一个在单击“登录”按钮后立即执行的自定义登录函数之外?)
SO网友:Rodgath
可以使用“init”挂钩重定向到站点的任何页面。下面是一个示例代码,演示如何完成此操作。
add_action(\'init\', \'wpse388876_redirect_to_home_page\');
function wpse388876_redirect_to_home_page() {
global $pagenow;
if (\'wp-login.php\' == $pagenow && (!is_user_logged_in() || !is_super_admin() || !is_admin())) {
$redirect_to = home_url();
wp_safe_redirect($redirect_to);
exit;
}
}
所有未登录的用户都将被重定向,但对于登录的用户,超级管理员将不会被重定向。