En algunos proyectos es posible que quieras limitar la compra de productos a solo una categoría por pedido, en este artículo veremos como realizar esto directamente a través de código.
Resultado Final
Al final queremos obtener algo similar a lo que se muestra en la siguiente imagen
Código para comprar productos de la misma categoría
El siguiente código esta optimizado para productos que tienen sólo una categoría asignada, si el producto no tiene categoría asignada se considera como una categoría = 0
add_filter( 'woocommerce_add_to_cart_validation', 'dcms_validate_same_category', 10, 3 );
function dcms_validate_same_category($passed, $product_id, $quantity){
if ( $passed && ! empty( WC()->cart->get_cart() ) ) {
// Get category current product
$product_category = wc_get_product_term_ids($product_id, 'product_cat')[0]??0;
// Get first product category
$first_cart_data = current(WC()->cart->get_cart());
$first_product_id = $first_cart_data['product_id'];
$cart_product_category = wc_get_product_term_ids($first_product_id, 'product_cat')[0]??0;
if ( $product_category !== $cart_product_category ){
wc_add_notice( 'Sólo puedes agregar productos de la misma categoría', 'error' );
return false;
}
}
return $passed;
}
En el código anterior:
- Usamos el Hook de validación del carrito woocommerce_add_to_cart_validation que hace referencia a la función dcms_validate_same_category()
- Dentro de la función comprobamos si el carrito esta o no vacío, si no esta vacío entonces hacemos las comprobaciones
- Utilizamos la función de Woocommerce wc_get_product_term_ids() para obtener los Ids de las categorias de un producto
- Obtenemos solo el primer elemento del array devuelto
- Por otro lado obtenemos el primer elemento del carrito y usamos la misma función de WooCommerce para obtener su primera categoría
- Hacemos la comparación si son diferentes devolvemos false, lo que quiere decir que no ha pasado la validación y no se podrá agregar al carrito
- También devolvemos un mensaje de error indicando que sólo se pueden agregar productos de la misma categoría
Conclusión
Como has podido comprobar puedes restringir la compra de productos para que pertenezcan a una misma categoría, en este artículo hemos visto como realizarlo de manera simple a través de código.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
La entrada Comprar productos de la misma categoría en WooCommerce es un artículo reciente del sitio DecodeCMS.
0 Commentaires