2017-07-21 12 views
0

問題があります。このコードはWPユーザパスワードとユーザ表示名を変更するために作成します。私のコードはローカルホスト上で動作していますが、同じコードがライブサーバで動作していません。私のコードの問題は何ですか?常にエラーを表示する!wp_update_userがライブサーバで動作していません

function pass_change_form() 
{ 
    global $wpdb; 
    $user_email  = $_POST["user_email"]; 
    $full_name  = $_POST["full_name"]; 
    $password  = $_POST["password"]; 
    $re_password = $_POST["re_password"]; 

    $results = $wpdb->get_results("SELECT * FROM wp_users WHERE user_email = '$user_email'"); 
    //var_dump($results); 
    $id   = $results[0]->ID; 
    $user_login = $results[0]->user_login; 
    $user_email = $results[0]->user_email; 

    if(empty($re_password)){ 
     $user_data = wp_update_user(array( 
         'ID'   => $id, 
         'user_login' => $user_login, 
         'user_email' => $user_email, 
         'display_name' => $full_name)); 

         if (is_wp_error($user_data)) { 
          echo 'Error'; 
         } else { 
          echo 1; 
         } 
    } 
    else{ 
     $user_data = wp_update_user(array( 
         'ID'   => $id, 
         'user_login' => $user_login, 
         'user_email' => $user_email, 
         'user_pass'  => $re_password, 
         'display_name' => $full_name)); 

         if (is_wp_error($user_data)) { 
          echo 'Error'; 
         } else { 
          echo 0; 
         } 
    } 
    die; 
} 
add_action('wp_ajax_pass_change_form', 'pass_change_form'); 
add_action('wp_ajax_nopriv_pass_change_form', 'pass_change_form'); 
+0

ライブサイトのユーザーテーブルは「wp_users」ですか?もしそうでなければ、それは問題かもしれません。 – stevenkellow

+1

私はちょうど興味があります、あなたがしようとしていることを正確に行うデフォルトのWordPress機能があります。なぜあなたはそれを使わないのですか? – berend

+0

@stevenkellowありがとう! – Sakib

答えて

0

Berend de Grootが彼のコメントで述べたように、なぜパスワード変更プロセスを書き直すのですか? WPには、これを行うための機能が組み込まれています。これを使用する方法については、wp_set_password()https://codex.wordpress.org/Function_Reference/wp_set_passwordを参照してください。

あなたのコードに関しては、以下はまったく同じことを行い、ちょうどクリーナーとして書き直され、既に存在する機能を使用します。

function pass_change_form() { 
    $user_email  = $_POST["user_email"]; 
    $password  = $_POST["password"]; 
    $re_password = $_POST["re_password"]; 

    $user = get_user_by('email', $user_email); 

    // Why use empty() to check a string? Is 're_password' an array? 
    if($user && !empty($re_password)) { 
     wp_set_password($re_password, $user->ID); 
    } 

    die; 
} 
add_action('wp_ajax_pass_change_form', 'pass_change_form'); 
add_action('wp_ajax_nopriv_pass_change_form', 'pass_change_form'); 
関連する問題