Woocommerce – Tariffe basate sul conteggio degli articoli presenti nel carrello

Plugins Programmazione Wordpress
0

Oggi per un e-commerce di un mio cliente avevo la necessità di creare uno script che calcolasse le tariffe, sulla base degli articoli (di una determinata categoria) presenti nel carrello.

Sulla base al codice di questa necessità, ho trovato il modo per contare gli articoli delle diverse categorie di prodotti. Come vedremo, il codice è compatto, ottimizzato e più efficiente.

Inoltre è necessario capire come funzionano gli hook quando si utilizza:

funzione add_action ($hook_name, $function_name_to_call, $priority, $args_count)
funzione add_filter ($hook_name, $function_name_to_call, $priority, $args_count)
Gli ultimi 2 argomenti sono facoltativi … Per impostazione predefinita la priorità è 10 e il conteggio degli argomenti è:

0 per un action hook.
1 per un filter hook.
In un filter hook, il primo argomento della funzione (variabile) viene sempre restituito alla fine della funzione.

add_action( 'woocommerce_cart_calculate_fees', 'custom_packing_fees' );
function custom_packing_fees( $cart ) {
if ( is_admin() && !defined('DOING_AJAX') )
return;
if ( did_action('woocommerce_cart_calculate_fees') >= 2 )
return;
// Initializing data (settings)
$data = [
['name' => __('Cupcake'),   'threshold' => 4,   'fee' => 15,    'count' => 0],
['name' => __('Cake'),      'threshold' => 3,   'fee' => 11,    'count' => 0],
['name' => __('Macaron'),   'threshold' => 6,   'fee' => 12,    'count' => 0],
];
$fee_text   = __('"%s" box fee (%d items)');
// Loop through cart items (counting product categories)
foreach ( $cart->get_cart() as $item ) {
// Loop through product categories
foreach ( $data as $key => $values ) {
if ( has_term( $values['name'], 'product_cat', $item['product_id'] ) ) {
// Increase the product category count (based on quantity)
$data[$key]['count'] += (int) $item['quantity'];
}
}
}
// Loop through product categories counts
foreach ( $data as $key => $values ) {
// Add a fee for each product category (when the count threshold value is reached)
if( $values['count'] >= $values['threshold'] ) {
$cart->add_fee( sprintf( $fee_text, $values['name'], $values['count'] ), $values['fee'], false );
}
}
}
Facebook Comments
0
Summary
Woocommerce - Tariffe basate sul conteggio degli articoli presenti nel carrello
Article Name
Woocommerce - Tariffe basate sul conteggio degli articoli presenti nel carrello
Description
Oggi per un e-commerce di un mio cliente avevo la necessità di creare uno script che calcolasse le tariffe, sulla base degli articoli (di una determinata categoria) presenti nel carrello
Author
prezzi dinamici Snippet woocommerce

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Related Posts