Tariffa aggiuntiva opzionale nel checkout di WooCommerce
Sto costruendo un negozio basato su WooCommerce. Devo aggiungere una checkbox aggiuntiva nella pagina di checkout chiamata "Assicurazione Spedizione". Quando il campo è selezionato, devo aggiungere un extra di $3 al Totale Ordine. Sono riuscito ad aggiungere una tariffa fissa in questo modo:
function woo_add_cart_fee() {
global $woocommerce;
// Verifica se l'assicurazione è stata selezionata
if ( isset($_POST['shipping_insurance']) && $_POST['shipping_insurance'] ) {
$woocommerce->cart->add_fee( __('Assicurazione Spedizione', 'woocommerce'), 3 );
}
}
add_action( 'woocommerce_before_calculate_totals', 'woo_add_cart_fee' );
Il problema è che questo aggiunge un fisso $3 al totale dell'ordine, quindi non è opzionale. Qualche idea su come procedere con questo problema?

Ok, ecco come ho fatto.
Crea un prodotto chiamato Assicurazione Spedizione che costa $3, assicurati che sia un prodotto nascosto (Visibilità Catalogo sul lato destro)
Utilizza il seguente codice nel file functions.php del tuo tema:
add_action('woocommerce_cart_totals_after_shipping', 'wc_shipping_insurance_note_after_cart');
function wc_shipping_insurance_note_after_cart() {
global $woocommerce;
$product_id = 669;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if ( $_product->id == $product_id )
$found = true;
}
// se il prodotto non viene trovato, aggiungilo
if ( ! $found ):
?>
<tr class="shipping">
<th><?php _e( 'Assicurazione Spedizione', 'woocommerce' ); ?></th>
<td><a href="<?php echo do_shortcode('[add_to_cart_url id="669"]'); ?>"><?php _e( 'Aggiungi assicurazione spedizione (+$3)' ); ?> </a></td>
</tr>
<?php else: ?>
<tr class="shipping">
<th><?php _e( 'Assicurazione Spedizione', 'woocommerce' ); ?></th>
<td>$3</td>
</tr>
<?php endif;
}
Modifica la variabile $product_id con l'ID del prodotto che hai creato e quando sarai nel checkout, aggiungerà semplicemente questo prodotto nascosto al tuo carrello

Questo non risponderà completamente alla tua domanda, ma la documentazione ufficiale di WooCommerce contiene un esempio simile a quello che speri di ottenere. In particolare, stai cercando una combinazione delle Lezioni 1 e 2.
Documentazione WooCommerce: Personalizzazione dei campi di checkout utilizzando azioni e filtri
Spero che possa aiutarti nell'attesa che qualcuno possa fornire una risposta più specifica.
