Tariffa aggiuntiva opzionale nel checkout di WooCommerce

6 nov 2013, 19:43:34
Visualizzazioni: 19.4K
Voti: 3

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?

0
Tutte le risposte alla domanda 2
0

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

5 gen 2014 17:04:07
0

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.

6 nov 2013 22:50:18