Wordpress 使用wp\u登录表单尝试错误登录时出现错误消息
所以我使用wp_login_表单允许用户登录到我网站的前端。我在允许PHP代码的小部件中使用wp_login_表单 (我这样做是因为当您单击登录时,我的登录表单会向下滑动。) 按钮。) 整个登录功能工作正常,但我想知道在输入错误信息时如何显示(自定义)错误消息。当前,您将被重定向到主页。重定向是可以的,但我想让用户知道他们做错了什么 下面是一个截图,代码也是Wordpress 使用wp\u登录表单尝试错误登录时出现错误消息,wordpress,forms,login,forms-authentication,Wordpress,Forms,Login,Forms Authentication,所以我使用wp_login_表单允许用户登录到我网站的前端。我在允许PHP代码的小部件中使用wp_login_表单 (我这样做是因为当您单击登录时,我的登录表单会向下滑动。) 按钮。) 整个登录功能工作正常,但我想知道在输入错误信息时如何显示(自定义)错误消息。当前,您将被重定向到主页。重定向是可以的,但我想让用户知道他们做错了什么 下面是一个截图,代码也是 <?php $args = array( 'redirect' => site_url( $_S
<?php
$args = array(
'redirect' => site_url( $_SERVER['REQUEST_URI'] ),
'form_id' => 'loginform',
'label_username' => __( 'GEBRUIKERSNAAM' ),
'label_password' => __( 'WACHTWOORD' ),
'label_log_in' => __( 'Log In' ),
'id_username' => 'user_login',
'id_password' => 'user_pass',
'id_submit' => 'wp-submit',
'value_username' => NULL,
);
add_action( 'wp_login_failed', 'pippin_login_fail' );
// hook failed login
function pippin_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') ) {
echo"U heeft verkeerde gegevens ingevuld.";
wp_redirect(home_url() . '/?login=failed' );
echo"U heeft verkeerde gegevens ingevuld.";
// let's append some information (login=failed) to the URL for the theme to use
exit;
}
}
add_action( 'login_form_middle', 'add_lost_password_link' );
function add_lost_password_link() {
return '<a href="/wp-login.php?action=lostpassword">Wachtwoord vergeten?</a>';
}
wp_login_form($args);
?>
您是否查看了过滤器“登录错误”
?我没有尝试过,但在我看来,您应该能够在functions.php
中创建一个函数,查看当前的错误消息,并将其更改为您想要的任何内容。然后,错误消息应显示在显示的下一个登录表单中。如果我正确理解了你的流程,那将是在他们被重定向到主页,然后他们再次放下登录框之后
嗯,
=C=使用以下短代码放置自定义登录框 快捷码:[自定义登录框] 将以下代码放入functions.php文件中
/*
* Shortcode for 'Custom Login Box'
*/
function custom_login_box_shortcode() {
ob_start();
$login = (isset($_GET['login']) ) ? $_GET['login'] : 0;
if ($login === "failed") {
echo '<p class="error"><strong>ERROR:</strong> Invalid username and/or password.</p><br><br>';
} elseif ($login === "empty") {
echo '<p class="error"><strong>ERROR:</strong> Username and/or Password is empty.</p><br><br>';
} elseif ($login === "false") {
echo '<p class="success"> You are logged out now.</p><br><br>';
}
wp_login_form();
return ob_get_clean();
}
add_shortcode( 'custom-login-box', 'custom_login_box_shortcode' );
/*
* Following 3 functions used to show login error message in same page
*/
function redirect_login_page() {
$login_page = get_home_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');
function login_failed() {
$login_page = get_home_url();
wp_redirect($login_page . '?login=failed');
exit;
}
add_action('wp_login_failed', 'login_failed');
function verify_username_password($user, $username, $password) {
$login_page = get_home_url();
if ($username == "" || $password == "") {
wp_redirect($login_page . "?login=empty");
exit;
}
}
add_filter('authenticate', 'verify_username_password', 1, 3);
/*
*“自定义登录框”的快捷码
*/
函数自定义\登录\框\快捷码(){
ob_start();
$login=(isset($\u GET['login'])?$\u GET['login']:0;
如果($login==“失败”){
echo'错误:无效的用户名和/或密码。
;
}elseif($login==“empty”){
echo'错误:用户名和/或密码为空。
;
}elseif($login==“false”){
echo'您现在已注销。
;
}
wp_登录_表单();
返回ob_get_clean();
}
添加快捷码(“自定义登录框”、“自定义登录框快捷码”);
/*
*以下3个函数用于在同一页面中显示登录错误消息
*/
函数重定向\登录\页面(){
$login\u page=get\u home\u url();
$page_viewsed=basename($_SERVER['REQUEST_URI']);
如果($page_viewsed==“wp login.php”&&$\u服务器['REQUEST\u METHOD']=='GET'){
wp_重定向($login_页面);
出口
}
}
添加_操作('init','redirect_login_page');
函数登录失败(){
$login\u page=get\u home\u url();
wp_重定向($login_page.'?login=failed');
出口
}
添加操作(“wp\u登录失败”、“登录失败”);
函数验证用户名密码($user、$username、$password){
$login\u page=get\u home\u url();
如果($username==“”| |$password==“”){
wp_重定向($login_page.?login=empty”);
出口
}
}
添加\u过滤器(“验证”、“验证\u用户名\u密码”,1,3);
嘿,卡尔,谢谢你的回答,现在登录表单不会产生错误。因此,这意味着没有太多的错误消息可编辑。你知道我可能在寻找什么样的代码吗?试着创建一个返回消息的函数,然后将它挂接到过滤器中。看看这是否会产生错误消息。我希望你能在URL上传递一些东西,但我没有看到任何关于这方面的文档。忽略最后的评论。我看到了这个问题,遗憾的是没有好的答案。你在插件的支持论坛上发布过吗?