WooCommerce: solicite una "muestra gratis" @ página de producto individual

Recientemente estaba en una llamada de asesoramiento con un cliente y surgió el desafío de la "muestra gratis". El cliente tiene más de 400 productos en el sitio web y no tenía intención de agregar manualmente una variación gratuita a cada producto.

Entonces, me prometí a mí mismo que iba a estudiar un enfoque diferente. Y hoy lo obtienes gratis, ¡genial! No hace falta decir que un comentario y una acción en las redes sociales son muy apreciadas .

Muestre un botón "Agregar muestra gratis al carrito" en la página de un solo producto de WooCommerce

Requisitos para la “muestra gratis” – WooCommerce

Antes de profundizar en PHP, deberá crear un nuevo producto oculto simple (de lo contrario, el código no funcionará. O llámelo como desee, pero asegúrese de cambiar el fragmento de PHP a continuación en consecuencia).

Aquí están los requisitos:

  • Título: lo que quieras, por ejemplo, " muestra gratis "
  • Precio: “ 0
  • Visibilidad del catálogo: “ Oculto
  • Inventario: " Vendido individualmente "

Asegúrese de recordar el ID de producto de este nuevo producto, ya que deberá usarlo en el fragmento de PHP

Fragmento de PHP: "Muestra gratis" Botón Agregar al carrito @ Página de producto único de WooCommerce

/**
 * @snippet       Add Free Sample to Cart @ Single Product
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
// -------------------------
// 1. Display Free Sample Add to Cart
// Note: change "123" with Free Sample ID
  
add_action( 'woocommerce_single_product_summary', 'bbloomer_add_free_sample_add_cart', 35 );
  
function bbloomer_add_free_sample_add_cart() {
   ?>
      <form class="cart" method="post" enctype='multipart/form-data'>
      <button type="submit" name="add-to-cart" value="123" class="single_add_to_cart_button button alt">Order a Free Sample</button>
      <input type="hidden" name="free_sample" value="<?php the_ID(); ?>">
      </form>
   <?php
}
  
// -------------------------
// 2. Add the custom field to $cart_item
  
add_filter( 'woocommerce_add_cart_item_data', 'bbloomer_store_free_sample_id', 9999, 2 );
  
function bbloomer_store_free_sample_id( $cart_item, $product_id ) {
   if ( isset( $_POST['free_sample'] ) ) {
         $cart_item['free_sample'] = $_POST['free_sample'];
   }
   return $cart_item;
}
  
// -------------------------
// 3. Concatenate "Free Sample" with product name (CART & CHECKOUT)
// Note: change "123" with Free Sample ID
  
add_filter( 'woocommerce_cart_item_name', 'bbloomer_alter_cart_item_name', 9999, 3 );
  
function bbloomer_alter_cart_item_name( $product_name, $cart_item, $cart_item_key ) {
   if ( 123 === $cart_item['product_id'] ) {
      $product = wc_get_product( $cart_item["free_sample"] );
      $product_name .=  " (" . $product->get_name() . ")";
   }
   return $product_name;
}
  
// -------------------------
// 4. Add "Free Sample" product name to order meta
// Note: this will show on thank you page, emails and orders
  
add_action( 'woocommerce_add_order_item_meta', 'bbloomer_save_posted_field_into_order', 9999, 2 );
  
function bbloomer_save_posted_field_into_order( $itemID, $values ) {
    if ( ! empty( $values['free_sample'] ) ) {
      $product = wc_get_product( $values['free_sample'] );
      $product_name = $product->get_name();
      wc_add_order_item_meta( $itemID, 'Free sample for', $product_name );
    }
}

Deja una respuesta

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

Subir