在wordpress中重定向登录表单

时间:2016-01-13 11:15:32

标签: php wordpress wordpress-theming

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

不幸的是,如果你在用户名/密码中犯了错误,它就会转发给你wp-login.php,它会向用户发送信箱。并且会破坏一致的品牌体验,例如。

那么有人知道如何让它不这样做吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

这将允许您在登录页面

中包含主题的页眉和页脚
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'));
    }

答案 1 :(得分:0)

通过说您使用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');