自定义登录页面Wordpress

时间:2018-04-26 20:02:20

标签: php wordpress

我正在尝试为我的Wordpress网站创建自定义登录页面模板,因此我使用了codex(https://codex.wordpress.org/Customizing_the_Login_Form)中的代码,但我不知道当用户输入错误时如何更改重定向用户名或密码。它将用户发送到默认的wp-login页面。 如何将用户重定向到我的自定义登录页面,但出现错误消息?

P.S。:我是一名自学成才的编码员,我对PHP几乎一无所知。

<?php  
/** 
 * Template Name: login page 
 */  
?> 

<?php get_header(); ?> 


<?php
    if ( ! is_user_logged_in() ) { // Display WordPress login form:
        $args = array(
            'redirect' => admin_url(),
            'form_id' => 'student-loginform',
            'label_username' => __( 'Username' ),
            'label_password' => __( 'Password' ),
            'label_remember' => __( 'Lembrar-me' ),
            'label_log_in' => __( 'Log In' ),
            'remember' => true,
            'echo' => true,
    );

    wp_login_form( $args );



    } else { // If logged in:
        wp_loginout( home_url() ); // Display "Log Out" link.
        echo " ";
    }
?>  




<?php get_footer(); ?> 

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我们有以下几种情况:

  1. 用户默认wp-login页面(如果使用不是admin我们需要重定向到主页,代码放置文件functions.php主题你的):

    add_action('admin_init', 'redirect_dashboard');  
    function redirect_dashboard() {  
    if (!current_user_can('administrator') && is_admin() && !wp_doing_ajax()) {  
        wp_redirect(get_bloginfo('url'));  
        exit;  
        }
    }
    
  2. 当用户输入错误的用户名或密码时重定向(可以清空数据用户名或密码,登录失败的代码放置文件functions.php主题为):

    function login_failed() {  
        $login_page  = home_url( '/login/' );  
        wp_redirect( $login_page . '?login=failed' );  
        exit;  
    }
    
    add_action( 'wp_login_failed', 'login_failed' );  
    function verify_username_password( $user, $username, $password ) {  
        $login_page  = home_url( '/login/' );  
        if( $username == "" || $password == "" ) {  
            wp_redirect( $login_page . "?login=empty" );  
            exit;  
        }
    }
    
  3. 当用户未登录时重定向(将代码放入header.php主题检查用户登录):

    if (!is_user_logged_in()) {  
        wp_redirect(home_url('/login/'));  
        exit;  
    }