Oggi vediamo un codice che ci aiuta a dare uno sconto al cliente che effettua un ordine sul sito web e che rispetta certe caratteristiche, in questo caso le seguenti:
- il cliente deve spendere almeno 250 €
- il cliente deve pagare con bonifico bancario oppure con ritiro in sede
// Soglia minima per la creazione del coupon define('IMPORTO_MINIMO_ORDINE_COUPON',250); // ogni volta che un ordine completato soddisfa i criteri, il cliente riceverà un'email con il coupon di sconto add_action('woocommerce_order_status_completed', 'invia_coupon_sconto', 10, 1); add_action('woocommerce_email_before_order_table', 'aggiungi_coupon_alla_mail', 10, 4); function invia_coupon_sconto($order_id) { $order = wc_get_order($order_id); if (!$order || $order->get_meta('generated_coupon_code')) { return; } // Ottieni il totale e il metodo di pagamento $order_total = $order->get_total(); $payment_method = $order->get_payment_method(); if ($order_total > IMPORTO_MINIMO_ORDINE_COUPON && in_array($payment_method, ['bacs', 'local_pickup'])) { // Genera e salva il coupon genera_coupon_per_ordine($order); } } function aggiungi_coupon_alla_mail($order, $sent_to_admin, $plain_text, $email) { if ($email->id == 'customer_completed_order') { // Verifica il totale dell'ordine $order_total = $order->get_total(); // Se il totale non supera la soglia, non mostrare il coupon if ($order_total <= IMPORTO_MINIMO_ORDINE_COUPON) { return; } if ( ! empty($coupon_code)) { echo '<div style="width: 80%; margin: 16px auto; padding: 16px 5%; text-align: center; border-width: 6px; border-style: dashed; border-color: #999;">'; echo '<h4 style="font-size: 16px;">Il tuo Coupon Pick & Pay</h4>'; echo '<h2 style="text-transform: uppercase; font-size: 32px; text-align: center;">' . esc_html($coupon_code) . '</h2>'; echo '<p>Utilizza questo coupon per ottenere uno sconto di un 8% sul tuo prossimo ordine. Questo coupon è utilizzabile una sola volta.</p>'; echo '</div>'; } } } function genera_coupon_per_ordine($order) { // Genera un codice coupon unico $coupon_code = 'sconto8_' . uniqid(); // Crea il coupon $coupon = new WC_Coupon(); $coupon->set_code($coupon_code); $coupon->set_discount_type('percent'); // Tipo di sconto percentuale $coupon->set_amount(8); // Sconto 8% $coupon->set_individual_use(true); // Utilizzabile solo una volta $coupon->set_usage_limit(1); // Limitato a un uso $coupon->save(); // Salva il codice coupon come meta nell'ordine $order->update_meta_data('generated_coupon_code', $coupon_code); $order->save(); return $coupon_code; }
Il cliente riceve nella mail lo sconto di un 8% da usare quando vuole, oppure nel codice ho inserirto e commentato ache un limite di tempo.
Impostato il coupon per essere usato solo 1 volta. In questo caso il coupon viene inserito nel sistema ed è realizzato in modo da essere univoco per ogni cliente.

Questo è quello che riceverà il cliente.
