2012-09-27 11 views
5

Ich füge zusätzliche Felder auf der Checkout-Seite in WooCommerce, Ich habe grundlegende Textfelder in Ordnung, aber ich möchte ein Dropdown oder wählen Sie ein Feld mit ein paar Optionen, Hier ist, was ich bisher getan habe, aber ich habe irgendwo einen Fehler gemachtWie füge ich ein ausgewähltes benutzerdefiniertes Feld zur Checkout-Seite in WooCommerce hinzu?

$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'), 

Vielleicht definiere ich nicht 'Typ' Feld richtig?

dank Lasten

Antwort

8

Wenn das Ihr genauer Code ist, dann ist das Problem ist, dass Sie ein Komma nach 'clear' => false fehlen.

Ich habe dies getestet und es funktioniert:

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

Bitte beachte, dass ich __() auf die Optionen Array-Schlüssel nicht auch verwenden. Es ist besser, diese nicht zu übersetzen.

+0

dank – stevie

5

das funktioniert. Hier ist mein Code

// 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; 
} 

dies funktioniert. aber es scheint, dass der Wert nicht unter _billing_dropdown gespeichert wird. Ich habe das Plugin "admin columns" verwendet, um ein Feld in der Auftragstabelle (Admin-Seite) hinzuzufügen. In meinem benutzerdefinierten Feld "Dropdown" wird kein Wert angezeigt. Wo kann ich den Wert abrufen? Dasselbe gilt für mein anderes benutzerdefiniertes Feld "purpose", das unter "_billing_purpose" steht und type => 'textarea' ist. Vielen Dank!

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

+0

eine Behandlung arbeitete ich weiß, das ist ein alter Thread, aber da Sie nicht die Antwort zu bekommen schien die Sie gesucht haben, müssen Sie die Reihenfolge Meta mit der Aktualisierung Feldwert. Hier ist, wie das tun: /** * Aktualisieren Sie die Reihenfolge Meta mit Feldwert */ add_action ('woocommerce_checkout_update_order_meta', 'dropdown_update_order_meta'); \t Funktion dropdown_update_order_meta ($ order_id) { if (! Empty ($ _POST [ 'Drop-Down'])) { \t update_post_meta ($ order_id 'Wie Sie fanden uns', sanitize_text_field ($ _POST [ 'Drop-Down'])); } } –

Verwandte Themen