2017-05-11 7 views
2

woocommerceのユーザーのfirst_nameに新しい値を設定しようとしていますが、私はwoocommerce 3.0の最後のドキュメントにある 'CRUD Objects in 3.0'を使ってこれを行いたいと思います。WoocommerceでCRUDオブジェクトを使用するには? - 新しいデータを設定する

私は変数definigてるSó:

$ wc_current_user = WC() - >顧客を。

ように$ FIRST_NAME、$ last_nameの、$、電子メール、$のbilling_address配列など顧客に関するデータと$データの配列を持っていると、このクラスWC_Customerのインスタンスを返す...

私がしようとしていますedit-account.phpフォームを書き直してこのオブジェクトにこのデータを送信したい場合、彼はgetterとsetterにこれを提供しますが、セッターは機能していないようですが、データを保存していません。

私はこれをやっている:

ユーザーからの最初の名を取りますと、私は、フォームを持っている、これは私が使用している、正常に動作している - > GET_FIRST_NAMEをし、正常に動作しています。私はこのケースであるセッター、使用してこのデータを提出しようとするとProblemaは、ここにある

<form class="woocommerce-account-information" action="" method="post"> 

    <label>First Name</label> 
    <input type="text" name="first_name" value="<?php echo 
    $wc_current_user->get_first_name()?>"/> 

    <button type="submit">SAVE</button> 
    </form> 

「オブジェクト - > SET_FIRST_NAME」と「オブジェクト - >を(保存)」、何も起こりません、誰かが助けることができます私?ここで

が私のコードです:

if(isset($_POST['first_name'])){ 
    $wc_current_user->set_first_name($_POST['first_name']); 
    $wc_current_user->save(); 

    } 

//これは^あなたが間違っているのか分からない、動かないのですか?

誰も私を助けることができれば、古い方法と新しい方法の両方を知ることに興味があり、大きな助けになるでしょう。ありがとうございました!

+1

あなたは*永久*新しい値を保存しようとしていますか?あなたは '$ wc_current_user-> save()'を試しましたか? – helgatheviking

答えて

0

私はあなたがこのようなオブジェクトを使用するときに、ネイサンが言ったの$オブジェクト-save()メソッドを使用する必要があり、この問題の解決策を見つけますplusthe $オブジェクト - > apply_changes();提出するデータ・ベースのデータを置き換える:

public function apply_changes() { 
    $this->data = array_replace_recursive($this->data, $this->changes); 
    $this->changes = array(); 
} 

は私の作業コードは次のようになります。

 $wc_current_user = WC()->customer; 

     if (isset($_POST['first_name'])) { 
      $wc_current_user->set_first_name($_POST['first_name']); 
      $wc_current_user->save(); 
      $wc_current_user->apply_changes(); 
     } 
+0

これは私を助けてくれました - ありがとう!しかし、私はsave()が変更を適用しない理由を理解していません。 – Rob

0

ユーザーのファーストネームを設定する正しい方法を使用しています。

set_first_name()は、独自の値を永久に保存しません。更新するプロパティをすべて設定したら、save()メソッドを呼び出す必要があります。

if (isset($_POST['first_name'])) { 
    $wc_current_user->set_first_name($_POST['first_name']); 
    $wc_current_user->save(); 
} 
+0

こんにちはネイサン、私の質問にお答えいただきありがとうございますが、私はまだデータを保存していません、他に何が起こるか知っていますか? $ wc_current_user = WC() - >顧客; if(isset($ _ POST ['first_name'])){ $ wc_current_user-> set_first_name($ _ POST ['first_name']); $ wc_current_user-> save(); } var_dump($ wc_current_user); 私はvar_dumpを使うかページをリフレッシュするときにfirst_nameが空です... –

関連する問題