2015-01-16 336 views
0

因此,我使用wp_login_form允许用户在我的网站的前端登录。我在一个允许PHP代码的小部件中使用wp_login_form。使用wp_login_form登录尝试错误时的错误消息

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

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

屏幕截图如下,代码也是如此。

Sliding PHP code

<?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); 

?> 

回答

0

你看着过滤'login_errors'?我还没有尝试过,但在我看来,你应该能够在你的functions.php中创建一个函数来查看当前的错误消息,并将其改为任何你想要的。应该在显示的下一个登录表单中显示错误消息。如果我正确理解了你的流程,那将会在他们被重定向到主页之后,然后他们再次下降登录框。

HTH,

= C =

+0

嘿卡尔,谢谢你的回答,可靠地登录表单不会产生任何错误。所以这意味着没有太多的错误信息需要编辑。你有没有想法,我可能会寻找什么样的代码? –

+0

尝试创建一个返回消息并将其挂接到该过滤器的函数。看看是否会产生你的错误信息。我希望你能在URL上传递一些信息,但是我没有看到任何文档。 –

+0

忽略最后的评论。我看到了问题,可悲的是没有好的答案。你有没有发布在插件的支持论坛? –

1

使用简码之后把自定义登录框。

简码:[自定义登录框]在您的的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); 
+0

不错的@Bhautik纳达 - 像一个魅力工程 – Archie22is