Come aggiornare il prezzo del prodotto in modo programmatico in WooCommerce

Pubblicato: 2020-10-10

Vuoi imparare come aggiornare il prezzo del prodotto in modo programmatico in WooCommerce ? In questa guida, ti mostreremo come modificare i prezzi in WooCommerce senza utilizzare alcun plug-in o installare alcuno strumento aggiuntivo.

Se li usi in modo intelligente, gli sconti possono aiutarti a migliorare i tassi di conversione e aumentare le vendite. Esistono diversi modi per implementare sconti sul tuo negozio e-commerce. Ad esempio, puoi applicare i coupon WooCommerce in modo programmatico.

Tuttavia, puoi anche aggiornare il prezzo del prodotto senza utilizzare i coupon . Ad esempio, potresti concedere uno sconto esclusivo agli utenti iscritti alla tua newsletter o che hanno speso più di $ 100 nel tuo negozio.

In questa guida imparerai a modificare il prezzo quando i clienti aggiungono un prodotto al carrello senza utilizzare alcun coupon e accedendo direttamente all'oggetto carrello WooCommerce. Daremo un'occhiata ad alcuni esempi e applicheremo una logica durante l'aggiornamento del prezzo. L'obiettivo è comprendere la logica in modo da poter personalizzare gli script e applicarli al tuo negozio.

Come aggiornare il prezzo del prodotto in modo programmatico in WooCommerce

In questa sezione imparerai come aggiornare il prezzo del prodotto in modo programmatico in WooCommerce . Daremo un'occhiata a diversi esempi per darti alcune idee su cosa puoi fare nel tuo negozio.

  1. Aggiorna il prezzo del prodotto quando viene selezionata una casella di controllo
    1. Aggiungi il campo di immissione della casella di controllo alla pagina dei prodotti
    2. Aggiorna il prezzo quando un utente aggiunge un prodotto al carrello
    3. Ricalcola il prezzo totale del carrello
  2. Modifica il prezzo del prodotto in base ai ruoli utente
  3. Aggiorna il prezzo del prodotto in base alla tassonomia del prodotto

Tieni presente che utilizzeremo diversi hook di WooCommerce, quindi è una buona idea dare un'occhiata a questa guida se non li conosci.

Prima di iniziare...

Prima di iniziare, poiché apporteremo modifiche ad alcuni file principali, ti consigliamo di installare un tema figlio sul tuo sito. Se non hai un tema figlio e non sai come installarlo, consulta la nostra guida per creare un tema figlio o il nostro elenco dei migliori plugin per temi figlio.

NOTA : per applicare questi script, copiali e incollali nel file functions.php del tema figlio. Tuttavia, tieni presente che sono destinati solo a scopi didattici, quindi personalizzali prima di portarli in produzione.

1) Aggiorna il prezzo del prodotto quando viene selezionata una casella di controllo

Nello script di esempio seguente, aggiungeremo una casella di controllo inserita nel modulo del carrello nella pagina del prodotto . In questo modo possiamo applicare logiche personalizzate e aggiornare dinamicamente il prezzo di qualsiasi prodotto che i clienti aggiungono al carrello solo quando la casella di controllo è selezionata. Come aggiornare il prezzo del prodotto in modo programmatico in WooCommerce

1.1 Aggiungi il campo di immissione della casella di controllo alla pagina dei prodotti

Prima di aggiornare il prezzo del prodotto WooCommerce in modo programmatico, aggiungiamo la casella di controllo alla pagina dei prodotti . Per farlo, copia e incolla semplicemente il seguente script:

 add_action('woocommerce_after_add_to_cart_button', 'add_check_box_to_product_page', 30 );
funzione add_check_box_to_product_page(){ ?>     
       <div>           
<label for="extra_pack"> <?php _e( 'Packaging extra', 'quadlayer' ); ?>
<input type="casella di controllo" name="extra_pack" value="extra_pack"> 
</etichetta>
                    
</div>
     <?php
}

Il gancio woocommerce_after_add_to_cart_button ci consente di stampare la casella di controllo subito dopo il pulsante come mostrato nell'immagine sopra.

1.2 Aggiorna il prezzo quando l'utente aggiunge un prodotto al carrello

Un'altra opzione interessante è aggiornare il prezzo in modo dinamico quando i clienti aggiungono un prodotto al carrello . Quindi, in questo caso, per aggiornare il prezzo in modo programmatico in WooCommerce è sufficiente incollare questo script subito dopo il precedente.

 add_filter('woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3);
 
funzione add_cart_item_data($cart_item_data, $id_prodotto, $id_variazione) {
     // ottieni l'ID e il prezzo del prodotto
    $prodotto = wc_get_prodotto($id_prodotto);
    $prezzo = $prodotto->get_prezzo();
    // casella di controllo pacchetto extra
    if( ! vuoto( $_POST['extra_pack'] ) ) {
       
        $cart_item_data['nuovo_prezzo'] = $prezzo + 15;
    }
restituisce $cart_item_data;
}

woocommerce_add_cart_item_data è l'hook WooCommerce che ci permetterà di modificare il prezzo del prodotto corrente. Inoltre, il condizionale if() controlla se la casella di controllo è selezionata o meno e, in tal caso, aggiorna il prezzo nella riga successiva. Ora, analizziamo il codice per capire meglio cosa fa ogni parte.

  • extra_pack è il nome della casella di controllo che abbiamo creato nel passaggio precedente
  • $price è il prezzo attuale del prodotto. Possiamo modificarlo come vogliamo con alcune condizioni
  • $cart_item_data['new_price'] = $price + 15; è il modo in cui aumentiamo il prezzo di $ 15 quando il condizionale if() è vero, questo è quando l'utente seleziona la casella di controllo dell'imballaggio extra. Modificando il codice, puoi scegliere di aumentare o diminuire il prezzo di qualsiasi importo desideri.

1.3 Ricalcola il prezzo totale del carrello

Poiché possiamo chiamare più volte l'hook woocommerce_add_cart_item_data durante il caricamento del carrello, è necessario ricalcolare i totali e i subtotali del carrello per evitare risultati indesiderati come l'aggiornamento dei prezzi più volte o ogni volta che un utente aggiunge un prodotto. Per aggiornare il prodotto, incolla il seguente codice dopo i due precedenti:

 add_action( 'woocommerce_before_calculate_totals', 'before_calculate_totals', 10, 1 );
 
funzione before_calculate_totals($cart_obj) {
if ( is_admin() && ! definito( 'DOING_AJAX' ) ) {
Restituzione;
}
// Scorri ogni articolo del carrello
foreach($cart_obj->get_cart() as $chiave=>$valore) {
if( isset( $valore['nuovo_prezzo'] ) ) {
$prezzo = $valore['nuovo_prezzo'];
$valore['dati']->set_price(($prezzo));
}
}
}

Questa funzione garantisce che aggiorniamo il prezzo solo quando un prodotto corrisponde alla nostra logica condizionale (che l'utente seleziona la casella di controllo dell'imballaggio aggiuntivo). In questo modo evitiamo tutti i possibili errori nel calcolo del prezzo totale del carrello. Aggiorna il prezzo del prodotto in modo programmatico in WooCommerce - Costo aggiuntivo

Il prezzo del prodotto aumenta di $ 15

Se tutto è andato bene e il carrello soddisfa le condizioni che abbiamo impostato, la nostra funzione aggiungerà un costo aggiuntivo di $ 15 al prezzo originale quando l'utente seleziona la casella di controllo nella pagina del prodotto, prima di fare clic sul pulsante Aggiungi al carrello.

Per evitare l'abbandono del carrello e migliorare l'esperienza di acquisto, dovresti sempre visualizzare il nuovo prezzo prima che i clienti aggiungano i prodotti al carrello . In caso contrario, vedranno solo il prezzo finale nella pagina di pagamento.

2. Modifica il prezzo del prodotto in base ai ruoli utente

Allo stesso modo, possiamo aggiornare il prezzo del prodotto WooCommerce in modo programmatico in base ai ruoli degli utenti . Ad esempio, potresti concedere uno sconto esclusivo agli utenti iscritti o registrati. Per farlo, copia e incolla il seguente script:

 funzione add_cart_item_data($cart_item_data, $id_prodotto, $id_variazione) {
    // ottieni l'ID e il prezzo del prodotto
   $prodotto = wc_get_prodotto($id_prodotto);
   $prezzo = $prodotto->get_prezzo();
   if(// Ha effettuato l'accesso && è il ruolo del cliente
       is_user_logged_in()==true&& wc_current_user_has_role( 'cliente' )){
       
        $cart_item_data['nuovo_prezzo'] = $prezzo * 0,8;
   }
restituisce $cart_item_data;
}
add_filter('woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3);

Come puoi vedere, l'unica differenza tra questo script e il precedente al punto 1.2 è l'operatore logico if() . Qui stiamo verificando se l'utente ha effettuato l'accesso o meno e se ha un ruolo cliente, che assegniamo agli utenti registrati che hanno già acquistato dal nostro negozio.

Quando un acquirente soddisfa tale condizione, moltiplichiamo il prezzo del prodotto per 0,8 , offrendogli uno sconto del 20%. Naturalmente, puoi modificare i ruoli utente e cambiarli per altri come Abbonato, Editor o qualsiasi altro ruolo che hai registrato sul tuo sito web.

Nota che per funzionare correttamente, devi anche utilizzare la funzione 'before_calculate_totals' e il relativo hook per ricalcolare i totali del carrello. Quindi usa semplicemente ricalcola il prezzo totale dello script del carrello che abbiamo visto nel passaggio 1.3.

3. Aggiorna il prezzo del prodotto in base alla tassonomia del prodotto

Infine, in WooCommerce possiamo anche aggiornare dinamicamente il prezzo del prodotto in modo programmatico in base alle tassonomie dei prodotti . Per farlo, diamo un'occhiata al seguente script.

 add_filter('woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3);
 
funzione add_cart_item_data($cart_item_data, $id_prodotto, $id_variazione) {
     // ottieni l'ID e il prezzo del prodotto
    $prodotto = wc_get_prodotto($id_prodotto);
    $prezzo = $prodotto->get_prezzo();
    $termini = get_the_terms($id_prodotto, 'gatto_prodotto');
    // Corrispondenza di categoria! applicare lo sconto
    if($terms[0]->name=='Poster'){                    
        $cart_item_data['nuovo_prezzo'] = $prezzo + 20;
     }   
restituisce $cart_item_data;
 
}

In questo esempio, otteniamo la categoria del prodotto che è stato aggiunto al carrello utilizzando la funzione integrata di WordPress get_the_terms() . Nella riga successiva, applichiamo il nostro condizionale per recuperare la categoria del prodotto utilizzando $terms[0]->name . In questo modo, se il prodotto appartiene alla categoria Poster, aumentiamo il prezzo di $20.

Questo è uno script di esempio che puoi prendere come base e modificarlo per modificare sia la tassonomia che l'importo che desideri aggiungere o detrarre dal prezzo.

Infine, ricorda che devi usare la funzione 'before_calculate_totals' e il relativo hook come abbiamo fatto nel passaggio 1.3.


Come puoi vedere, il know-how nell'utilizzo delle funzioni condizionali e WordPress/WooCommerce fornirà un modo estremamente flessibile per aggiornare i prezzi dei prodotti in modo programmatico. Questi sono solo alcuni esempi per darti un'idea di ciò che è possibile.

Tuttavia, c'è molto di più che puoi fare per liberare la tua creatività e trovare nuovi modi per modificare il prezzo dei tuoi prodotti. Ad esempio, puoi applicare sconti su ID prodotto specifici, in base all'URL da cui provengono gli utenti, a seconda della posizione o dell'ID degli utenti e così via. Le possibilità sono infinite, quindi gioca con la sceneggiatura e trova le migliori soluzioni per il tuo negozio.

NOTE FINALI

  • Questi script di esempio ai punti 1, 2 e 3 non funzioneranno insieme. Dovrai perfezionare la tua logica in una sola se desideri applicare più funzioni contemporaneamente
  • Potrebbe essere necessario includere funzioni di convalida aggiuntive per una logica condizionale più complessa
  • Applicare sempre una funzione di ricalcolo – come visto al punto 1.3 – quando si lavora con l'oggetto carrello WooCommerce
  • Questi sono script di esempio e sono destinati esclusivamente a scopi didattici. Si prega di regolarli prima di metterli in produzione

Conclusione

Tutto sommato, imparare ad aggiornare il prezzo del prodotto in modo programmatico in WooCommerce può darti molta flessibilità. Puoi concedere sconti agli utenti abbonati, aggiungere commissioni se i clienti desiderano un imballaggio extra o una consegna rapida e così via. E la parte migliore è che non è necessario installare alcun plug-in per farlo.

In questa guida, abbiamo visto diversi esempi per modificare dinamicamente il prezzo in modo programmatico. Tuttavia, questa è solo la punta dell'iceberg. WooCommerce ti offre infinite possibilità, quindi ti consigliamo di giocare e personalizzare gli script.

Se hai domande sugli script, faccelo sapere nei commenti qui sotto. Saremo felici di aiutarti.

Infine, se vuoi migliorare il tuo processo di checkout, dai un'occhiata alla nostra guida per ottimizzare il checkout.