Cómo añadir productos automáticamente al carrito solo por visitar la tienda

Un elemento de fidelización en cualquier tienda online podría ser añadir un producto, preferentemente gratuito, al carrito de cualquier visitante solo por el hecho de haber llegado a tu ecommerce, así que vamos a ver cómo lograrlo.

Añadir un producto automáticamente al carrito

Para conseguir esto primero necesitas identificar el ID del producto que quieres añadir al carrito. Para ello ve a la lista de productos en el escritorio de tu WordPress y en el listado los verás al pasar el cursor sobre cualquier producto.

Una vez localizado el producto que quieres añadir automáticamente al carrito es el momento de crear la función que hará la magia.

Para ello añade un código como el siguiente a tu plugin de funcionalidades, o si lo prefieres en el archivo functions.php del tema activo:

/** Añadir producto al carrito al visitar la tienda **/
add_action( 'template_redirect', 'add_product_to_cart' );
function add_product_to_cart() {
	if ( ! is_admin() ) {
		$product_id = 54; //El ID del producto
		$found = false;
		//primero comprobamos que no esté ya en el carrito
		if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
			foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
				$_product = $values['data'];
				if ( $_product->id == $product_id )
					$found = true;
			}
			// si no está el producto ya se añade
			if ( ! $found )
				WC()->cart->add_to_cart( $product_id );
		} else {
			// si no hay productos en el carrito se añade
			WC()->cart->add_to_cart( $product_id );
		}
	}
}

Lo único que tienes que hacer para adaptarlo a tu tienda es modificar el ID del producto, que en el ejemplo es el 54, como en la captura anterior.

Lo que hace el código es definir el ID de producto a añadir, a continuación comprueba que no esté ya en el carrito, para no añadirlo 2 veces, y si no está se añade automáticamente.

Eso sí, no te sorprendas de un comportamiento extraño, y es que si el cliente quiere borrar el producto del carrito, sí, se borra, pero al instante se vuelve a añadir automáticamente, como si entrase en bucle.

Vamos, que es un truco ideal para añadir productos gratuitos.

Añadir un producto automáticamente al carrito a partir de un gasto concreto

Otra posibilidad es que, en vez de añadir el producto automáticamente solo por visitar tu tienda lo hagas cuando el carrito del cliente haga un gasto determinado, como premio a su fidelidad.

Para ello, de nuevo, tienes que crear una función con el ID del producto a añadir automáticamente al carrito y, además, en esta ocasión definir el importe mínimo del carrito para que se añada el producto. Algo así:

/** Añadir producto al carrito dependiendo del montante **/
add_action( 'init', 'add_product_to_cart' );
function add_product_to_cart() {
  if ( ! is_admin() ) {
		global $woocommerce;
		$product_id = 54;  //ID del producto
		$found = false;
		$cart_total = 50; //Importe total mínimo del carrito

		if( $woocommerce->cart->total >= $cart_total ) {
			//Comprobamos que el producto no esté ya en el carrito
			if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
				foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
					$_product = $values['data'];
					if ( $_product->id == $product_id )
						$found = true;
				}
				// si no está el producto en el carrito lo añadimos
				if ( ! $found )
					$woocommerce->cart->add_to_cart( $product_id );
			} else {
				// si no hay productos en el carrito lo añadimos
				$woocommerce->cart->add_to_cart( $product_id );
			}
		}
	}
}

Ah, y no se te olvide guardar los cambios en el archivo, jeje.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(3 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

6 comentarios en “Cómo añadir productos automáticamente al carrito solo por visitar la tienda”

  1. Oscar Gálvez Martín

    Hola Fernando,
    Veo que en un caso has utilizado el hook «template_redirect» y en otro «init». ¿Es por algún motivo en concreto? Gracias.

  2. David Alejandro

    Brutal Fernando, menudos tips!, este va a encantar a los dos clientes a los que les estoy desarrollando tienda ahora mismo.
    Gracias por el aporte.

  3. El Arcón De La Reina

    Buenos días! he introducido este código en functions.php pero al comprobar si efectivamente se añadía el producto al carrito no aparece nada. He cambiado el SKU y el importe de compra mínimo, pero tras introducir varios productos para llegar a importe requerido no aparece automáticamente el producto de regalo. Qué puedo estar haciendo mal?

    1. Encontre esta funcion que me anduvo, incluso si el precio del carrito cambia quita el producto del mismo. Lo que no se puede hacer es quitar el producto por mas que el precio no baje.
      /*
      * Automatically adding the catalog to the cart when cart total amount reach to $25.
      */
      function aapc_add_product_to_cart() {
      global $woocommerce;

      $cart_total = 25;
      if ( $woocommerce->cart->total >= $cart_total ) {
      if ( ! is_admin() ) {
      $free_product_id = 101861; // Product Id of the free product which will get added to cart
      $found = false;
      //check if product already in cart
      if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
      foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
      $_product = $values[‘data’];
      if ( $_product->get_id() == $free_product_id )
      $found = true;
      }
      // if product not found, add it
      if ( ! $found )
      WC()->cart->add_to_cart( $free_product_id );
      } else {
      // if no products in cart, add it
      WC()->cart->add_to_cart( $free_product_id );
      }
      }
      }
      }
      add_action( ‘template_redirect’, ‘aapc_add_product_to_cart’ );

      add_action( ‘template_redirect’, ‘remove_product_from_cart’ );
      function remove_product_from_cart() {
      // Run only in the Cart or Checkout Page
      global $woocommerce;
      $current = WC()->cart->cart_contents_total;
      $min_amount= 25;
      $prod_to_remove = 101861;
      if ( $current < $min_amount) { if( is_cart() || is_checkout() ) { // Cycle through each product in the cart foreach( WC()->cart->cart_contents as $prod_in_cart ) {
      // Get the Variation or Product ID
      $prod_id = ( isset( $prod_in_cart[‘variation_id’] ) &&
      $prod_in_cart[‘variation_id’] != 0 ) ? $prod_in_cart[‘variation_id’] : $prod_in_cart[‘product_id’];
      // Check to see if IDs match
      if( $prod_to_remove == $prod_id ) {
      // Get it’s unique ID within the Cart
      $prod_unique_id = WC()->cart->generate_cart_id( $prod_id );
      // Remove it from the cart by un-setting it
      unset( WC()->cart->cart_contents[$prod_unique_id] );
      }
      }
      }
      }
      }

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido