El WooCommerce predeterminado Agregar al CART «Entrada de cantidad» es un campo de entrada simple donde puede ingresar el número de elementos o hacer clic en «+» y «-» para aumentar/reducir la cantidad.
Un cliente independiente me contrató para convertir esa entrada en un menú desplegable «Seleccionar». Para su audiencia y requisitos de UX, tiene sentido permitir que sus clientes elijan la cantidad de un menú desplegable en lugar de tener que ingresar el número manualmente.
En línea hay fragmentos complejos, pero decidí facilitar las cosas. La función de WooCommerce responsable de generar la entrada de cantidad se llama «wooCommerce_quantity_input«.
Afortunadamente, es un Función conectable – lo que significa que simplemente podemos agregar este nombre exacto de la función a las funciones de nuestro tema de hijo.php para anularlo por completo. ¡Disfrutar!
Php Snippet: Gire la «cantidad» de sumar al carrito en un desplegable seleccionado-WooCommerce
NOTA: Esto y todas las funciones conectables anulan. no funcionará en el Complemento de fragmentos de código. En su lugar, otra razón para obtener todo su código personalizado en un tema infantil.
/** * @snippet Add to Cart Quantity drop-down - WooCommerce * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @testedwith WooCommerce 8 * @community https://businessbloomer.com/club/ */ function woocommerce_quantity_input( $args = array(), $product = null, $echo = true ) { if ( is_null( $product ) ) { $product = $GLOBALS['product']; } $defaults = array( 'input_id' => uniqid( 'quantity_' ), 'input_name' => 'quantity', 'input_value' => '1', 'classes' => apply_filters( 'woocommerce_quantity_input_classes', array( 'qty', 'text' ), $product ), 'max_value' => apply_filters( 'woocommerce_quantity_input_max', -1, $product ), 'min_value' => apply_filters( 'woocommerce_quantity_input_min', 0, $product ), 'step' => apply_filters( 'woocommerce_quantity_input_step', 1, $product ), 'pattern' => apply_filters( 'woocommerce_quantity_input_pattern', has_filter( 'woocommerce_stock_amount', 'intval' ) ? '[0-9]*' : '' ), 'inputmode' => apply_filters( 'woocommerce_quantity_input_inputmode', has_filter( 'woocommerce_stock_amount', 'intval' ) ? 'numeric' : '' ), 'product_name' => $product ? $product->get_title() : '', ); $args = apply_filters( 'woocommerce_quantity_input_args', wp_parse_args( $args, $defaults ), $product ); // Apply sanity to min/max args - min cannot be lower than 0. $args['min_value'] = max( $args['min_value'], 0 ); // Note: change 20 to whatever you like $args['max_value'] = 0 < $args['max_value'] ? $args['max_value'] : 20; // Max cannot be lower than min if defined. if ( '' !== $args['max_value'] && $args['max_value'] < $args['min_value'] ) { $args['max_value'] = $args['min_value']; } $options = ''; for ( $count = $args['min_value']; $count <= $args['max_value']; $count = $count + $args['step'] ) { // Cart item quantity defined? if ( '' !== $args['input_value'] && $args['input_value'] >= 1 && $count == $args['input_value'] ) { $selected = 'selected'; } else $selected = ''; $options .= ''; } $string = ''; if ( $echo ) { echo $string; } else { return $string; } }