WooCommerce: «¿Es esto un regalo?» Casilla de verificación en una sola página de producto

Un cliente mío me pidió que codificara una casilla de verificación en la página de un solo producto llamada «¿Es esto un regalo?». Se dieron cuenta de que sus clientes que quieren regalar el producto a un amigo se confunden con el formulario «Envío a una dirección diferente» en el pago de WooCommerce.

Entonces, ¿qué hay de cambiar el nombre de «Envío a una dirección diferente» a «¿Para quién es este regalo?» si hay un «regalo» en el carrito? Bueno, este fragmento hace precisamente eso y puedes adaptarlo/personalizarlo a tu caso específico.

«¿Es esto un regalo?» casilla de verificación @ Página de producto único de WooCommerce

Fragmento de PHP: «¿Es esto un regalo?» Casilla de verificación @ Página de un solo producto – WooCommerce

/**
* @snippet       "Is This a Gift?" Checkbox @ Single Product Page - WooCommerce
* @how-to        Get CustomizeWoo.com FREE
* @sourcecode    https://businessbloomer.com/?p=73381
* @author        Rodolfo Melogli
* @testedwith    WooCommerce 3.5.1
* @donate $9     https://businessbloomer.com/bloomer-armada/
*/
 
// -------------------------
// 1. Display Is this a Gift checkbox
  
add_action( 'woocommerce_before_add_to_cart_quantity', 'bbloomer_is_this_gift_add_cart', 35 );
  
function bbloomer_is_this_gift_add_cart() {
       
      ?>
 
      <p class="">
      <label class="checkbox">
      <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="is-gift" id="is-gift" value="Yes"><span>Is this a gift?</span>
      </label>
      </p>
 
      <?php
 
}
  
// -------------------------
// 2. Add the custom field to $cart_item
  
add_filter( 'woocommerce_add_cart_item_data', 'bbloomer_store_gift', 10, 2 );
  
function bbloomer_store_gift( $cart_item, $product_id ) {
if( isset( $_POST['is-gift'] ) && $_POST['is-gift'] == "Yes" ) {
   $cart_item['is-gift'] = $_POST['is-gift'];
}
return $cart_item;
}
  
// -------------------------
// 3. Preserve the custom field in the session
  
add_filter( 'woocommerce_get_cart_item_from_session', 'bbloomer_get_cart_items_from_session', 10, 2 );
  
function bbloomer_get_cart_items_from_session( $cart_item, $values ) {
if ( isset( $values['is-gift'] ) ){
   $cart_item['is-gift'] = $values['is-gift'];
}
return $cart_item;
}
  
// -------------------------
// 4. If gift in cart, edit checkout behavior:
// a) open shipping by default
// b) rename shipping title
  
add_action ( 'woocommerce_before_checkout_form', 'bbloomer_gift_checkout' );
 
function bbloomer_gift_checkout() {
    
   $itsagift = false;
    
   foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
      if ( isset( $cart_item['is-gift'] ) ) {
         $itsagift = true;
         break;
      }
   }
    
   if ( $itsagift == true ) {
      add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true' );
      add_filter( 'gettext', 'bbloomer_translate_shipping_gift' );
   }
    
}
 
function bbloomer_translate_shipping_gift( $translated ) {
$translated = str_ireplace( 'Ship to a different address?', 'Who is this Gift For?', $translated );
return $translated;
}

Deja un comentario