Как добавить настраиваемое поле выбора на страницу оформления заказа в 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'),

Может, я неправильно определяю поле типа?

спасибо кучу


person SWD    schedule 27.09.2012    source источник


Ответы (2)


Если это ваш точный код, проблема в том, что вам не хватает запятой после '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' )
        )
    );

Обратите внимание, что я также не использовал __() для ключей массива параметров. Таких лучше не переводить.

person Brent Shepherd    schedule 01.10.2012

это работает. вот мой код

// 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. Я использовал плагин "административные столбцы", чтобы добавить поле в таблицу заказов (на стороне администратора). в раскрывающемся списке настраиваемого поля значение не отображается. где я могу получить значение? То же самое и с другим моим настраиваемым полем «назначение», которое находится в разделе «_billing_purpose» и имеет тип => 'textarea'. Благодарность!

вот снимок экрана https://scontent-b-hkg.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10696182_985415141473105_5302358697439449940_n.jpg?oh=74cb5ebc6b1ad6dd0c29e51293=550f26df

person Gerald    schedule 09.12.2014
comment
Я знаю, что это старый поток, но, поскольку вы, похоже, не получили ответ, который искали, вам необходимо обновить мета-порядок заказа, указав значение поля. Вот как это сделать: / ** * Обновить мета заказа значением поля * / add_action ('woocommerce_checkout_update_order_meta', 'dropdown_update_order_meta'); функция dropdown_update_order_meta ($ order_id) {if (! empty ($ _POST ['dropdown'])) {update_post_meta ($ order_id, 'Как вы нас нашли', sanitize_text_field ($ _POST ['dropdown'])); }} - person Joshua Walcher; 26.01.2015