Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 使用wp\u登录表单尝试错误登录时出现错误消息_Wordpress_Forms_Login_Forms Authentication - Fatal编程技术网

Wordpress 使用wp\u登录表单尝试错误登录时出现错误消息

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

所以我使用wp_login_表单允许用户登录到我网站的前端。我在允许PHP代码的小部件中使用wp_login_表单

(我这样做是因为当您单击登录时,我的登录表单会向下滑动。) 按钮。)

整个登录功能工作正常,但我想知道在输入错误信息时如何显示(自定义)错误消息。当前,您将被重定向到主页。重定向是可以的,但我想让用户知道他们做错了什么

下面是一个截图,代码也是

<?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上传递一些东西,但我没有看到任何关于这方面的文档。忽略最后的评论。我看到了这个问题,遗憾的是没有好的答案。你在插件的支持论坛上发布过吗?