2012-09-27 10 views
5

私はWooCommerceのチェックアウトページに余分なフィールドを追加しています。 基本的なテキストフィールドを追加しましたが、いくつかのオプションを持つドロップダウンボックスまたは選択ボックスが必要です ここまでは何ですか?どこかでエラーが発生しましたWooCommerceのチェックアウトページにカスタムフィールドを追加するには?

$fields['billing']['billing_meat'] = array(
    'label'  => __('Food options', 'woocommerce'), 
'placeholder' => _x('', 'placeholder', 'woocommerce'), 
'required' => false, 
'clear'  => false 
'type' => 'select', 

'options' => array(     // array of key => value pairs for select options 
      __('I eat meat', 'woocommerce') => __('I eat mate', 'woocommerce'), 
      __('meat is gross', 'woocommerce') => __('meat is gross', 'woocommerce'), 

「タイプ」フィールドが正しく定義されていない可能性がありますか?

おかげ負荷

答えて

8

それはあなたの正確なコードであれば、問題はあなたが'clear' => false後にカンマが欠けているということです。

私はこれをテストしてみた、それが動作します:私はまた、オプションの配列のキーに__()を使用しなかった

$fields['billing']['billing_meat'] = array(
    'label'  => __('Food options', 'woocommerce'), 
    'placeholder' => _x('', 'placeholder', 'woocommerce'), 
    'required' => false, 
    'clear'  => false, 
    'type'  => 'select', 
    'options'  => array(
     'eat-meat' => __('I eat maet', 'woocommerce'), 
     'not-meat' => __('Meat is gross', 'woocommerce') 
     ) 
    ); 

注意を。それらを翻訳しない方が良いです。

+0

おかげで私は、これは古いスレッドですけど、あなたが探していた答えを得るように思わなかったので、あなたと注文メタを更新する必要が御馳走 – stevie

5

これは機能しています。ここに私のコードは

// Hook in 
add_filter('woocommerce_checkout_fields' , 'dropdown'); 

// Our hooked in function - $fields is passed via the filter! 
function dropdown($fields) { 
    $fields['billing']['dropdown'] = array(
     'label'  => __('dropdown', 'woocommerce'), 
    'placeholder' => _x('dropdown', 'placeholder', 'woocommerce'), 
    'required' => false, 
    'class'  => array('form-row-wide'), 
    'clear'  => true, 
    'type'  => 'select', 
    'options'  => array(
     'option 1' => __('option 1', 'woocommerce'), 
     'option 2' => __('option 2', 'woocommerce') 
     )//end of options 
    ); 

    return $fields; 
} 

これは動作します。値は_billing_dropdownの下に保存されていないようです。私は、 "admin columns"プラグインを使用して注文テーブル(管理者側)にフィールドを追加しました。私のカスタムフィールド "ドロップダウン"の下に、値は表示されません。どこで値を取得できますか? "_billing_purpose"の下にあり、type => 'textarea'の私の他のカスタムフィールド "目的"と同じです。ありがとう!

ここ https://scontent-b-hkg.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10696182_985415141473105_5302358697439449940_n.jpg?oh=74cb5ebc6b1ad6dd0c29e51293b61fdf&oe=5502613C

+0

を働いたスクリーンショットですフィールド値。ここでそれを行う方法は次のとおりです。 /** * フィールド値 */ add_action( 'woocommerce_checkout_update_order_meta'、 'dropdown_update_order_meta')と注文メタを更新します。 ($ _POST [ 'ドロップダウン'])sanitize_text_field 'あなたは私たちが見つかりどのように' \t 関数dropdown_update_order_meta($ ORDER_ID){ 場合(!空($ _POST [ 'ドロップダウン'])){ \t update_post_meta($ ORDER_ID、 ); } } –

関連する問題