可能有一种更简单的方法可以做到这一点,但您可以重写wp_authenticate_username_password()
中的函数\\wp-includes\\class-wp-error.php
文件
当然,您不能直接编辑该函数,但由于该函数是一个过滤器函数,因此您可以删除过滤器、复制它、将复制的函数添加回并测试它。在测试它仍然产生相同的错误后,您可以更改复制代码中的错误。
下面的代码删除了旧的WordPress函数,并创建了一个具有唯一名称的新函数。
remove_filter( \'authenticate\', \'wp_authenticate_username_password\' );
add_filter( \'authenticate\', \'wpse_115539_authenticate_username_password\', 20, 3 );
/**
* Remove Wordpress filer and write our own with changed error text.
*/
function wpse_115539_authenticate_username_password( $user, $username, $password ) {
if ( is_a($user, \'WP_User\') )
return $user;
if ( empty( $username ) || empty( $password ) ) {
if ( is_wp_error( $user ) )
return $user;
$error = new WP_Error();
if ( empty( $username ) )
$error->add( \'empty_username\', __(\'<strong>ERROR</strong>: The username field is empty.\' ) );
if ( empty( $password ) )
$error->add( \'empty_password\', __( \'<strong>ERROR</strong>: The password field is empty.\' ) );
return $error;
}
$user = get_user_by( \'login\', $username );
if ( !$user )
return new WP_Error( \'invalid_username\', sprintf( __( \'<strong>ERROR</strong>: Invalid username. <a href="%s" title="Password Lost and Found">Lost your password</a>?\' ), wp_lostpassword_url() ) );
$user = apply_filters( \'wp_authenticate_user\', $user, $password );
if ( is_wp_error( $user ) )
return $user;
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) )
return new WP_Error( \'incorrect_password\', sprintf( __( \'<strong>ERROR</strong>: The password you entered for the username <strong>%1$s</strong> is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?\' ),
$username, wp_lostpassword_url() ) );
return $user;
}
下一步是测试代码,以确保它产生与之前相同的错误。测试完成后,请尝试根据需要更改错误消息。如果出现错误,请重新开始或注释掉前两行,WordPress函数将使用旧的错误消息。
// remove_filter( \'authenticate\', \'wp_authenticate_username_password\', 20, 3 );
// add_filter( \'authenticate\', \'wpse_115539_authenticate_username_password\', 20, 3 );