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 .

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