每当我在没有登录时输入https://mydomain/wp-admin,就会被重定向到
wp-login.php?redirect_to=https%3A%2F%2Fmydomain%2Fwp-admin%2F&reauth=1在一些帮助下,我创建了以下代码,将用户重定向到wp-login.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-login.php。这使得我的上述函数将我重定向到自定义登录表单,因为显然在单击“登录”之后,我还没有登录。我如何解决这个问题(除了编写一个自定义登录函数,该函数在单击“登录”按钮后立即执行?)
发布于 2021-05-30 09:41:36
通过使用“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;
}
}所有非登录用户都将被重定向,但是对于登录用户,超级管理员不会被重定向。
https://wordpress.stackexchange.com/questions/388876
复制相似问题