2017-03-21 7 views
0

woocommerce_checkout_fieldsフィルタを使用して、woocommerceのチェックアウトにカスタムフィールドを追加しています。これらのフィールドの1つはselectです。これがフィールドのコードです。woocommerceチェックアウトフィールドフィルタのオプションプロパティにキー値のペアを動的に追加

// Add a new checkout field 
function ds_filter_checkout_fields($fields){ 
    $suburb = ds_get_delivery_suburbs(); 
    $postcodes = ds_get_delivery_postcodes(); 
    $fields['extra_fields'] = array(
     'some_field' => array(
      'type' => 'text', 
      'required'  => true, 
      'label' => __('Some field') 
     ), 
     'select_field' => array(
      'type' => 'select', 
      'options' => array('key' => 'value'), 
      'required'  => true, 
      'label' => __('Another field') 
     ) 
    ); 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'ds_filter_checkout_fields'); 

あなたがそこにoptionsプロパティがあり、それはキーと値のペアを取るselect_fieldコードをチェックすると...私はoptionsプロパティへのダイナミックなキーと動的な値を挿入したい...のコードでは、私は取得していますダイナミックkey$postcodesからダイナミックvalue$suburbからこのように挿入しようとすると、'options' => array($postcodes => $suburb),この警告が表示されますWarning: Illegal offset type ...私は他の方法のカップルを試してみましたが、彼らはうまくいきませんでした。あなたの助けに感謝します...あなたの応答を楽しみにしています。

注:私はこれを見つけましたが、何も答えが見つかりませんでしたので、私は助けのためにStackoverflowになっています。

答えて

0

あなたはそれがダイナミックになりたい場合は、その後、株式のvar_dump($ ma_options)が動作しない場合、それは

// Add a new checkout field 
function ds_filter_checkout_fields($fields){ 
    $suburb = ds_get_delivery_suburbs(); 
    $postcodes = ds_get_delivery_postcodes(); 
    $ma_options[$postcodes] = $suburb; 
    $fields['extra_fields'] = array(
     'some_field' => array(
      'type' => 'text', 
      'required'  => true, 
      'label' => __('Some field') 
     ), 
     'select_field' => array(
      'type' => 'select', 
      'options' => $ma_options[$postcodes], 
      'required'  => true, 
      'label' => __('Another field') 
     ) 
    ); 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'ds_filter_checkout_fields'); 

になるので、あなたは、最初に設定し、アレイを記入し、それを使用する必要があります;

---ためのキーとして文字列ではありませんインデックス、既存のか通らない何かが起こる可能性があり

UPDATE

。必要に応じて型を文字列にキャストするか、stdClassオブジェクトを使用する必要があります。

関連する問題