2016-10-24 2 views
0

こんにちは、私はwoocommerceのカスタムチェックアウトフィールドに質問があります。 チェックアウトフォームにカスタムフィールドを作成しましたが、すべてが完全に機能していました。このフィールドには、顧客カード番号が含まれています。私はまた、一度だけ入力されたフィールド値をwp-usermetaに保存して、注文と一緒に来ないようにしましたが、顧客の詳細と一緒に保存されます。woocommerceのカスタムチェックアウトフィールドを管理する

今私は次のことをしたいと思います。登録された顧客がショップに戻ったら、毎回カード番号を挿入する代わりに、新しいフィールド(empytでない場合)が自動的に表示されます。

/** 
* Add the field to the checkout 
*/ 
add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number'); 

    function checkout_w55_card_number($checkout) { 

     echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>'; 

     woocommerce_form_field('w55_card_number', array(
      'type'   => 'text', 
      'class'   => array('w55-card-number-class form-row-wide'), 
      'label'   => __('Inserisci n. tessera W55'), 
      'placeholder' => __('Inserisci numero'), 
     ), $checkout->get_value('w55_card_number')); 
     echo '</div>'; 
} 

が、私はこのように、この方法でそれを再アレンジしてみましたが、それはdoesnの:

私がチェックアウトページにカスタムフィールドを示すために私の子供のテーマfucntions.phpに追加し、元の機能でした仕事は

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number'); 

function checkout_w55_card_number($checkout) { 
//extracts the value of the w55_card_number field 
$w55_card = get_user_meta($user_id, 'w55_card_number', true); 
//condition is the w55_card_number field is empty or not 
if (!empty($w55_card)) : echo $w55_card;  else : 

      echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>'; 

      woocommerce_form_field('w55_card_number', array(
       'type'   => 'text', 
       'class'   => array('w55-card-number-class form-row-wide'), 
       'label'   => __('Inserisci n. tessera W55'), 
       'placeholder' => __('Inserisci numero'), 
      ), $checkout->get_value('w55_card_number')); 
      echo '</div>'; 
     endif; 
    } 

どのような提案ですか?

答えて

1

user_id変数が定義されていませんでした。あなたは次のことを実行する必要があります。

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number'); 

function checkout_w55_card_number($checkout) { 
    $user_id = get_current_user_id(); 
    $w55_card = ''; 
    if ($user_id) { 
     //extracts the value of the w55_card_number field 
     $w55_card = get_user_meta($user_id, 'w55_card_number', true); 
    } 
    //condition is the w55_card_number field is empty or not 
    if (!empty($w55_card)) : echo $w55_card;  
    else : 
     echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>'; 
     woocommerce_form_field('w55_card_number', array(
      'type'   => 'text', 
      'class'   => array('w55-card-number-class form-row-wide'), 
      'label'   => __('Inserisci n. tessera W55'), 
      'placeholder' => __('Inserisci numero'), 
     ), $checkout->get_value('w55_card_number')); 
     echo '</div>'; 
    endif; 

}

+0

あー素晴らしい!!ありがとう@ミルザップ! –

+0

あなたは歓迎です – MirzaP

関連する問題