2012-09-13 4 views
2

안녕하세요 저는 틀린 이메일이나 패스워드가 입력되었을 때 header.php의 드롭 다운에있는 Wordpress 커스텀 로그인을 얻으 려하고 있습니다. . 여기 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 뭔가를 사용할 수 있습니다. 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는 이미 사용자를 거부했습니다 달리 어떤 $ 사용자 이름 또는 $ 비밀번호가되지 않습니다.

희망이 도움이됩니다. 사용자가이 wp-login.php 페이지로 이동합니다 사용자 이름 & 암호를 작성하지 않고 로그인 버튼을 클릭하면

0

functions.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."; 
    }