在WordPress中重定向登录表单


redirection of login form in wordpress

我目前正在网站上使用wp_login_form(),当您正确登录时,它会将用户重定向到相应的URL。

不幸的是,如果您在用户名/密码中犯了错误,它会将您转发给wp-login.php,这会向用户摇晃其框。并破坏一致的品牌体验,例如。

那么有谁知道一种方法可以让它不这样做呢?

试试这个:

这将允许您在登录页面包含主题的页眉和页脚

add_action( 'login_head', 'wp_custom_login_header' );
    function wp_custom_login_header() {
        wp_enqueue_style( 'wp-custom-login' );
        do_action('wp_custom_login_header_before');
        get_header();
        do_action('wp_custom_login_header_after');
    }
    add_action( 'login_footer', 'wp_custom_login_footer' );
    function wp_custom_login_footer() {
        do_action('wp_custom_login_footer_before');
        get_footer();
        do_action('wp_custom_login_footer_after');
    }
    function wp_custom_login_is_login_page() {
        return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'));
    }

通过说您使用wp_login_form()功能,我猜您在自己的页面上使用自定义表单。

您可以做几件事。

如果此表单位于它自己的页面上,并且您只想将不正确的密码/用户名返回到该页面并提醒用户,则可以在functions.php文件中创建一个函数,该函数将重定向到引用页面,如下所示:

add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login
function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
   // if there's a valid referrer, and it's not the default log-in screen
   if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
   }
}

如果您只想删除震动,您可以在functions.php文件中使用此代码段,它将停止摇晃。

function my_login_head() {
remove_action('login_head', 'wp_shake_js', 12);
}
add_action('login_head', 'my_login_head');

最后一个建议仅基于用户访问wp-login.php页面,然后将他们踢回您的自定义登录页面。

function redirect_login_page() {
    $login_page  = home_url( '/login/' ); // CHANGE THIS TO YOUR PAGE URL
    $page_viewed = basename($_SERVER['REQUEST_URI']);
    if( $page_viewed == "wp-login.php" && $_SERVER['REQUEST_METHOD'] == 'GET') {
        wp_redirect($login_page);
        exit;
    }
}
add_action('init','redirect_login_page');