Hola, cómo están?
Quisiera saber si es posible agregar un solo carrito para todos los productos de una misma categorÃa.
Lo que quiero hacer es lo que se muestra en mi web temporal:
http://viandasc-cp5013.wordpresstemporal.com/temporal/viandas-veggie/
Como pueden ver, están listados todos los productos de una misma categorÃa (Viandas Veggie) y abajo le agregué un "Añadir al Carrito".
Lo que me gustarÃa es que el botón de Añadir al Carrito sirva para todos los productos seleccionados con anterioridad (estoy usando un plugin llamado Qty Increment Buttons for WooCommerce).
Es IMPORTANTE remarcar que no quiero un "Añadir al Carrito" debajo de cada producto, esto lo resuelvo con el siguiente código:
add_action('customize_controls_print_footer_scripts', 'et_divi_customizer_link');
add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_add_to_cart');
Quiero un solo botón de "Añadir al carrito" para todos los productos
Desde ya, muchas gracias!
Saludos.
Contenido solo visible a usuarios registrados
Hola Damian,
Según entiendo lo que necesitas es agregar un botón de agregar al carrito que automáticamente agregue 1 de cada uno de los productos que necesites? si este es el caso antes de realizar cualquier ajuste en código recuerda que debes tener creadas las páginas de carrito, mi cuenta, etc.
Estás puedes crearlas ingresando en el panel izquierdo de wordpress en Woocommerrce > Estado > Herramientas > Crea las páginas por defecto de WooCommerce
Luego de que ya tengas las paginas creadas puedes agregar el código por medio de tu archivo functions.php al final del todo, ubicado en tu tema padre o tema hijo ingresando en:
Cpanel > administrador de archivos > Public_html > dominio > wp-content > themes > Tu tema o tema hijo > archivo functions.php
Otra opción es utilizar el complemento de Code Snippets, una vez lo instalas tendrás un panel lateral en tu wordpress que indica Fragmento de codigo > anadir nuevo.
El código que debes agregar es el siguiente:
function woocommerce_maybe_add_multiple_products_to_cart() {
// Make sure WC is installed, and add-to-cart qauery arg exists, and contains at least one comma.
if ( ! class_exists( 'WC_Form_Handler' ) || empty( $_REQUEST['add-to-cart'] ) || false === strpos( $_REQUEST['add-to-cart'], ',' ) ) {
return;
}
// Remove WooCommerce's hook, as it's useless (doesn't handle multiple products).
remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );
$product_ids = explode( ',', $_REQUEST['add-to-cart'] );
$count = count( $product_ids );
$number = 0;
foreach ( $product_ids as $product_id ) {
if ( ++$number === $count ) {
// Ok, final item, let's send it back to woocommerce's add_to_cart_action method for handling.
$_REQUEST['add-to-cart'] = $product_id;
return WC_Form_Handler::add_to_cart_action();
}
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product_id ) );
$was_added_to_cart = false;
$adding_to_cart = wc_get_product( $product_id );
if ( ! $adding_to_cart ) {
continue;
}
$add_to_cart_handler = apply_filters( 'woocommerce_add_to_cart_handler', $adding_to_cart->product_type, $adding_to_cart );
/*
* Sorry.. if you want non-simple products, you're on your own.
*
* Related: WooCommerce has set the following methods as private:
* WC_Form_Handler::add_to_cart_handler_variable(),
* WC_Form_Handler::add_to_cart_handler_grouped(),
* WC_Form_Handler::add_to_cart_handler_simple()
*
* Why you gotta be like that WooCommerce?
*/
if ( 'simple' !== $add_to_cart_handler ) {
continue;
}
// For now, quantity applies to all products.. This could be changed easily enough, but I didn't need this feature.
$quantity = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity );
if ( $passed_validation && false !== WC()->cart->add_to_cart( $product_id, $quantity ) ) {
wc_add_to_cart_message( array( $product_id => $quantity ), true );
}
}
}
// Fire before the WC_Form_Handler::add_to_cart_action callback.
add_action( 'wp_loaded', 'woocommerce_maybe_add_multiple_products_to_cart', 15 );
Luego de que ya lo tienes activo hay que comprender un poco el funcionamiento, este permite agregar varios ids en el link que permite agregar artÃculos al carrito:
tu dominio/carrito/?add-to-cart=ID1,ID2,ID3
De esta forma tendrÃas que crear un botón en la categorÃa que mencionas que posea este enlace y agregue automáticamente todos los productos que has seleccionado por el id.
Verifica y nos comentas que tal te va, un saludo 🖐️Â
Hola @argenis ,
Realicé la prueba del código agregandolo en snippets, y funciona perfecto acorde a tus indicaciones.
Sin embargo no es exactamente lo que estaba buscando. Lo que realmente necesito es que en el carrito se agreguen los elementos que haya seleccionado.
Supongamos que en la categorÃa tengo 9 productos:
- Si selecciono solo 1 de los 9, que me agregue solamente ese
- Si selecciono 4 veces un mismo elemento, que agregue ese elemento x4 (estas son las cantidades que uso con el plugin Qty Increment Buttons for WooCommerce)
- Si selecciono un elemento x2 y otro elemento x4, que me agregue esos dos elementos solamente (uno x2 y el otro x4).
- Si selecciono todos los elementos, solo una vez cada uno, que me agregue los 9 al carrito.
Es decir, necesito que se descarten todos los elementos de la categorÃa, salvo los que seleccioné.
Â
Para que te des una idea, serÃa como tener un pack de productos. Esto lo solucionaba con el plugin: Paquetes de productos de WPC para WooCommerce. Sin embargo, este plugin solo sirve para crear productos como paquetes, y luego agregar productos a este producto padre. Yo no quiero esa funcionalidad.
Â
Cualquier duda o consulta que no se haya entendido, puedo profundizar aún más en el tema.
Muchas gracias por la asistencia.
Saludos.
Hola Damian,
Comprendo en este caso lo que requieres es algo un poco mas detallado y elaborado a la medida, ya que no existe una documentación sobre este proceso que intentas realizar, puedes comunicarte con nuestros colaboradores quienes podrán ayudarte a crear un código personalizado que se adapte exactamente a lo que necesitas.
https://www.webempresa.com/directorio-colaboradores.html
Sin embargo si quieres puedes darle un vistazo a este complemento:
Puedes ver un ejemplo del mismo en este enlace > Contenido solo visible a usuarios registrados , pese a que no es exactamente lo que necesitas funciona acorde a lo que comentas, si se agrega el botón de añadir al carrito se mantiene en la misma pagina para poder agregar otros de esta categorÃa, adicional a esto por lo que se ve se despliega un módulo cuando los productos tienen variaciones a elegir.
Ten en cuenta que este complemento es de pago por lo que si lo adquieres no podremos ayudarte del todo ya que no poseemos la licencia del mismo, solo podemos guiarnos por medio de su documentación y tendrias que consultar otras configuraciones del mismo al soporte de este.
Un saludo 🖐️Â