Quiero agregar la clase .form-control al menú desplegable de variaciones en las páginas de productos de WooCommerce.

Parece que hay una opción para hacerlo. Encontré la función wc_dropdown_variation_attribute_options.

La función tiene un atributo de clase:

function wc_dropdown_variation_attribute_options( $args = array() ) { 
$args = wp_parse_args( apply_filters( 'woocommerce_dropdown_variation_attribute_options_args', $args ), array( 
    'options' => false,  
    'attribute' => false,  
    'product' => false,  
    'selected' => false,  
    'name' => '',  
    'id' => '',  
    'class' => '',  
    'show_option_none' => __( 'Choose an option', 'woocommerce' ),  
 ) ); 

¿Existe alguna solución para agregar la clase al menú desplegable? Solo encontré la función pero ningún código / fragmento para cambiar el atributo de clase.

Editar: encontré un fragmento que personaliza el menú desplegable, pero no sé cómo usarlo solo para agregar la clase: https: / /stackoverflow.com/a/47189725/1788961

1
Cray 28 oct. 2019 a las 19:41

1 respuesta

La mejor respuesta

La respuesta está en apply_filters( 'woocommerce_dropdown_variation_attribute_options_args', $args )

Básicamente, necesita usar ese filtro para acceder a las $args que se están pasando. En su situación particular, así es como lo haría:

add_filter( 'woocommerce_dropdown_variation_attribute_options_args', static function( $args ) {
    $args['class'] = 'form-control';
    return $args;
}, 2 );

Lo que hace esto es que se engancha en el filtro woocommerce_dropdown_variation_attribute_options_args y pasa el $args original a una función estática. Luego, básicamente, establece el valor del índice class de la matriz $args. Luego devuelve el $args.

2
disinfor 28 oct. 2019 a las 17:14