我正在尝试为我的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(); ?>
答案 0 :(得分:0)
为了解决这个问题,我们有以下几种情况:
用户默认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;
}
}
当用户输入错误的用户名或密码时重定向(可以清空数据用户名或密码,登录失败的代码放置文件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;
}
}
当用户未登录时重定向(将代码放入header.php主题检查用户登录):
if (!is_user_logged_in()) {
wp_redirect(home_url('/login/'));
exit;
}