2012-09-27 16 views
5

Estoy agregando campos adicionales a la página de pago en WooCommerce, He agregado campos de texto básicos, pero quiero un menú desplegable o cuadro de selección con algunas opciones, Esto es lo que he hecho hasta ahora, pero yo ha cometido un error en algún lugar¿Cómo agregar un campo personalizado de selección a la página de pago en 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'), 

¿Quizás no estoy definiendo el campo "tipo" correctamente?

cargas gracias

Respuesta

8

Si ese es su código exacto, entonces el problema es que se echa en falta una coma después de 'clear' => false.

He probado esto y funciona:

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

en cuenta que yo también no uso __() en las teclas de opciones de la matriz. Es mejor no traducir esos.

+0

gracias funcionaba un lujo – stevie

5

esto está funcionando. aquí está mi código

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

esto funciona. pero parece que el valor no se guarda bajo _billing_dropdown. Utilicé el complemento "columnas de administración" para agregar un campo en la tabla de órdenes (lado administrativo). en mi campo personalizado "menú desplegable", no aparece ningún valor. ¿Dónde puedo recuperar el valor? Lo mismo ocurre con mi otro campo personalizado "propósito" que está bajo "_billing_purpose" y es type => "textarea". ¡Gracias!

aquí está una captura de pantalla https://scontent-b-hkg.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10696182_985415141473105_5302358697439449940_n.jpg?oh=74cb5ebc6b1ad6dd0c29e51293b61fdf&oe=5502613C

+0

Sé que esto es un hilo de edad, pero ya que no parecía obtener la respuesta que estabas buscando, es necesario actualizar el meta orden con el valor de campo He aquí cómo hacerlo: /** * Actualizar el meta orden con el valor del campo */ add_action ('woocommerce_checkout_update_order_meta', 'dropdown_update_order_meta'); \t función dropdown_update_order_meta ($ order_id) { if (! Empty ($ _POST [ 'desplegable'])) { \t update_post_meta ($ order_id, 'cómo encontró con nosotros', sanitize_text_field ($ _POST [ 'desplegable'])); } } –

Cuestiones relacionadas