2017-03-21 1 views
0

Ich füge einige benutzerdefinierte Felder zu Woocommerce Checkout mit woocommerce_checkout_fields Filter. Eines dieser Felder ist ein select Dropdown-Menü. Dies ist mein Code für die Felder.Dynamisch hinzufügen Schlüsselwert-Paar zu Optionen Eigenschaft von Woocommerce Checkout-Felder Filter

// 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'); 

Wenn Sie den select_field Code überprüfen gibt es eine options Eigenschaft und es dauert Schlüssel-Wert-Paar ... Ich mag options Eigenschaft auf dynamische Schlüssel und dynamischen Wert einfügen ... In dem Code, den ich das bin immer Dynamisch key von $postcodes und dynamisch value von $suburb und wenn ich versuche, es so zu setzen 'options' => array($postcodes => $suburb), bekomme ich diese Warnung Warning: Illegal offset type ... Ich habe einige andere Methoden ausprobiert, aber sie haben nicht funktioniert, also wandte ich mich an euch ... Ich schätze deine Hilfe ... freue mich auf deine Antworten.

HINWEIS: Ich habe das gegooglet, aber habe keine Antworten gefunden, deshalb habe ich Stackofflow um Hilfe gebeten.

Antwort

0

Wenn Sie es wünschen, dynamisch zu sein, müssen Sie zuerst gesetzt und das Feld füllen und dann verwenden, so wäre es

// 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'); 

sein, wenn es nicht funktioniert, dann teilen Sie var_dump ($ ma_options) ;

--- UPDATE

, die wegen der Index nicht vorhanden oder vorbei etwas passieren könnte, die keine Zeichenfolge als Schlüssel. Wenn gewünscht, sollten Sie Ihren Typ in eine Zeichenfolge umwandeln oder das stdClass-Objekt verwenden.

Verwandte Themen