2012-09-13 14 views
2

嗨我試圖讓我的Wordpress自定義登錄是在header.php下拉列表中顯示錯誤,當輸入不正確的電子郵件或密碼,或者即使兩者或1留空。Wordpress自定義登錄與錯誤處理

這裏是我使用

<?php 
if (! is_user_logged_in()) { // Display WordPress login form: 
    $args = array(
     'redirect' => admin_url(), 
     'form_id' => 'loginform-custom', 
     'label_username' => __('Username custom text'), 
     'label_password' => __('Password custom text'), 
     'label_remember' => __('Remember Me custom text'), 
     'label_log_in' => __('Log In custom text'), 
     'remember' => true 
    ); 
    wp_login_form($args); 
} else { // If logged in: 
    wp_loginout(home_url()); // Display "Log Out" link. 
    echo " | "; 
    wp_register('', ''); // Display "Site Admin" link. 
} 
?> 

登錄表單,我發現這個代碼從這裏: https://wordpress.stackexchange.com/questions/61267/prevent-wp-login-form-from-redirecting-to-wp-admin-when-there-are-errors

function wp_authenticate($username, $password) { 
    $username = sanitize_user($username); 
    $password = trim($password); 

    $user = apply_filters('authenticate', null, $username, $password); 

    if ($user == null) { 
     $user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.')); 
    } 

    $ignore_codes = array('empty_username', 'empty_password'); 

    if (is_wp_error($user) && !in_array($user->get_error_code(), $ignore_codes)) { 

     // Put your code here 

    } 

    return $user; 
} 

我已經複製到上述的functions.php在我主題文件夾,但它不工作 - 我必須在我的表格中調用它,如果是這樣的話?我應該在什麼地方說:

//把你的代碼放在這裏?

+0

爲了避免重定向到WP的登錄頁面,您可以使用這樣的事情在這裏的第二個答案的http:// WordPress的。 stackexchange.com/questions/15633/how-can-i-redirect-user-after-entering-wrong-password,「//把你的代碼放在這裏」是指你想用來顯示錯誤的代碼。 – leticia

回答

0

函數wp_authenticate($ username,$ password)是一個WP函數,所以不需要在functions.php中添加它。它可以在wp-includes目錄中的pluggable.php中找到。

是的,你必須在你的表單或驗證腳本中調用它,就像你調用任何其他函數一樣。例如:

$CheckValidUser = wp_authenticate($username, $password); 

我猜打電話is_user_logged_in之前,你應該把它叫做(),否則不會有任何$用戶名或$密碼WP已經拒絕用戶。

希望這會有所幫助。

0

把下面的代碼放在functions.php如果用戶點擊登錄按鈕而沒有填寫用戶名&密碼它會移動到wp-login.php頁面。

我們可以在functions.php文件中解決此問題,購買以下代碼。使用自定義登錄和工作對我罰款

add_action('init', 'prevent_wp_login'); 

function prevent_wp_login() { 
     if(isset($_POST['log']) && isset($_POST['pwd'])) 
     if($_POST['log']=='' && $_POST['pwd']=='') 
     { 
       $page = write your redirect url; 
       // Redirect to the your url 
       wp_redirect($page); 

     exit(); 
     } 
    } 
0

wp_signon()函數:

require('wp-load.php'); 
$err = ''; 
$success = ''; 
global $wpdb,$current_user; 
    $response = array(); 
    $data = json_decode(file_get_contents("php://input")); 

    $email = $data->email_id; 
    $password = $data->password; 
    $username = $wpdb->escape($email); 
    $password = $wpdb->escape($password); 
    $remember = true; 
    if($remember) $remember = "true"; 
    else $remember = "false"; 
    $login_data = array(); 
    $login_data['user_login'] = $username; 
    $login_data['user_password'] = $password; 
    $login_data['remember'] = $remember; 

    $user_verify = wp_signon($login_data, false); 
    set_current_user($user_verify->ID); 
    if (is_user_logged_in()) 
    { 
     get_currentuserinfo(); 

      $response['user_id']=$user_verify->ID; 
      $response['first_name']=$current_user->user_firstname ; 
      $response['last_name']=$current_user->user_lastname; 
      $response['email']=$current_user->user_email; 
     $status="success"; 
     $msg=""; 
    } else {  
     $status="failed"; 
     $msg="Invalid Credential."; 
    }