Eliminar "Elige una opción" en variaciones de producto y seleccionar automáticamente
Tengo un campo desplegable específico en productos variables en mi sitio WooCommerce que siempre tiene solo una opción disponible. Ejemplo: el cliente elige el "tipo" del artículo, luego el "color", y finalmente el "número de parte", donde el desplegable de "número de parte" siempre tiene solo una opción.
Quiero configurar el sitio para eliminar el requisito de elegir una opción del desplegable "número de parte" y en su lugar, seleccionar automáticamente la única opción disponible.
¿Hay alguna forma de hacer esto? Parece que WooCommerce necesita una opción que permita seleccionar automáticamente un atributo de variación cuando solo hay un atributo posible disponible para la combinación.

El siguiente código cumple con el propósito:
add_filter('woocommerce_dropdown_variation_attribute_options_args','fun_select_default_option',10,1);
function fun_select_default_option( $args)
{
if(count($args['options']) > 0) //Verifica la cantidad de opciones disponibles en el menú desplegable
$args['selected'] = $args['options'][0];
return $args;
}

Por alguna razón eso no está teniendo ningún efecto. Lo he insertado en el archivo functions.php de mi tema hijo. ¿Hay algo que deba cambiar para apuntar al campo desplegable específico?

Todavía no logro que cambie el comportamiento de los menús desplegables, incluso cuando experimento con diferentes valores para ($args['options']). Sigo necesitando seleccionar manualmente la opción disponible en el último menú desplegable. Otra forma de decirlo es que simplemente necesito eliminar "elige una opción" en todos los casos y forzar que seleccione la primera opción disponible.

Disculpa por no entender completamente, pero ¿cómo determino eso? ¿Quieres decir que necesito verificar el conteo de combinaciones de variaciones disponibles en un producto específico?

agrega la declaración echo count($args['options']); antes de if(count($args['options']) == 1). Esto imprimirá el conteo de opciones disponibles

@Aparna_29 Gracias por el código, funciona perfectamente. Lo estoy usando para establecer (forzar) la variación por defecto para todos los productos con múltiples variaciones.

No conocía este hook. Gracias. Pero el código no funciona en todos los casos posibles. Por ejemplo, si tenemos dos atributos A y B con valores a1, a2, a3 y b1, b2, b3, y no existe la variación a1+b1, tendremos un reinicio automático a "Elige una opción". Por lo tanto, necesitamos verificar si existe la variación y, probablemente, su estado de stock.

Consulta la respuesta original.
Entonces hay 2 casos diferentes:
1) Eliminar completamente esta opción HTML**:
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
function filter_dropdown_option_html( $html, $args ) {
$show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
$show_option_none_html = '<option value="">' . esc_html( $show_option_none_text ) . '</option>';
$html = str_replace($show_option_none_html, '', $html);
return $html;
}
El código va en el archivo functions.php
de tu tema hijo activo (o tema activo). Probado y funciona.
2) Eliminar solo el texto "Seleccionar una opción" (tendrás una opción sin nombre de etiqueta):
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
function filter_dropdown_option_html( $html, $args ) {
$show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
$show_option_none_text = esc_html( $show_option_none_text );
$html = str_replace($show_option_none_text, '', $html);
return $html;
}

Utiliza el plugin Snippets que puede agregar snippets a function.php sin necesidad de modificar los archivos directamente. Este código hace que si el número de opciones es 1, muestre esa única opción en el menú desplegable pero sin eliminarla como variable. Úsalo bajo tu propio riesgo, soy diseñador web, no realmente un desarrollador.
Mi caso de uso puede ser diferente. Tengo varios miles de productos, con 5 combinaciones posibles diferentes. Para mantener todos los productos iguales (especialmente al importar y exportar) tengo 5 menús desplegables de variación incluso si un producto no tiene realmente una variación. Esto funciona cuando la página se carga, no creo que funcione basado en la selección de un atributo previo.
add_filter('woocommerce_dropdown_variation_attribute_options_args','woo_select_default_option',10,1);
function woo_select_default_option( $args)
{
if(count($args['options']) == 1) //Asegura que la variación del producto no esté vacía
$args['selected'] = $args['options'][0];
return $args;
}
