2012-09-27 15 views
5

Dodaję dodatkowe pola do strony kasy w WooCommerce, Dodałem podstawowe pola tekstowe ok, ale chcę rozwinąć lub wybrać pole z kilkoma opcjami, Oto, co zrobiłem do tej pory, ale ja gdzieś popełniono błąd:Jak dodać wybrane pole niestandardowe do strony płatności w 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'), 

Może nie definiuję poprawnie pola "typ"?

dzięki ładunki

Odpowiedz

8

Jeśli to jest twój dokładny kod, to problem jest to, że brakuje przecinka po 'clear' => false.

Przetestowałem to i to działa:

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

Zauważ, że ja również nie używać __() na klawiszach opcje tablicy. Lepiej ich nie tłumaczyć.

+0

dzięki pracowała doskonale – stevie

5

to działa. oto mój kod

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

to działa. ale wydaje się, że wartość nie jest zapisywana pod _billing_dropdown. Użyłem wtyczki "kolumny administracyjne", aby dodać pole w tabeli zamówień (strona administratora). pod moim niestandardowym polem "dropdown" nie wyświetla się żadna wartość. gdzie mogę odzyskać wartość? to samo dotyczy mojego innego niestandardowego pola "cel", który jest pod "_billing_purpose" i jest typem => "textarea". dzięki!

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

+0

Wiem, że to stary wątek, ale skoro nie wydaje się uzyskać odpowiedź, której szukasz, trzeba zaktualizować meta zamówienia z wartość pola. Oto, jak to zrobić: /** * Zaktualizuj meta zamówienia o wartość pola */ add_action ('woocommerce_checkout_update_order_meta', 'dropdown_update_order_meta'); \t funkcja dropdown_update_order_meta ($ order_id) { if (! Empty ($ _ POST [ 'rozwijane'])) { \t update_post_meta ($ order_id 'Jak nas znalazłeś', sanitize_text_field ($ _ POST [ 'rozwijane'])); } } –

Powiązane problemy