Avisos
Vaciar todo

Añadir un único botón de "Añadir al carrito" en cada Categoría  

 
Damián
 Damián
Nuevo usuario

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

Citar
Respondido : 05/05/2021 4:28 am
Argenis
 Argenis
Soporte CMS Webempresa Moderator

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

image

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 🖐️ 

ResponderCitar
Respondido : 05/05/2021 5:19 am
Damián
 Damián
Nuevo usuario

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.

ResponderCitar
Respondido : 06/05/2021 12:40 am
Argenis
 Argenis
Soporte CMS Webempresa Moderator

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:

WP Food

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 🖐️ 

ResponderCitar
Respondido : 06/05/2021 1:20 am