(woocommerce) prendere il prezzo totale del carrello ma senza decimali
-
salve,
ho la necessità di fare un get del prezzo totale del carrello di woocommerce ma senza i decimali.riesco ad ottenere il prezzo del carrello così $woocommerce->cart->total ma come tolgo i decimali sono al prezzo che ottengo da questa stringa?
spero di essere stato chiaro,
grazie
-
Ciao @capnjazz,
se ho capito bene, dovrebbe essere sufficiente assegnare ad una variabile un “cast” di php, ma ovviamente dipende da quello che stai cercando di fare.
Credo qualcosa come$total_int = $woocommerce->cart->total; $total_int = intval( $total_int );
dovrebbe essere sufficiente…
Facci sapere.
-
Questa risposta è stata modificata 6 anni, 6 mesi fa da
_Y_Power. Motivo: esteso esempio
sì, infatti mi sa che spiego meglio il contesto:
ho questo plugin, YITH WC Points and Rewards, che da X punti per X euro spesi nello shop.
L’ho settato così: 1 punto per ogni € 10 euro spesi.
Ovviamente il plugin non mi calcola i decimali, cioè non può darmi 14.5 punti, ma solo 14.
Quindi, per informare l’utente su quanti punti avrà se effettua l’acquisto, ho fatto un get del prezzo totale del carrello dividendolo per 10 (1 punto x 10 euro spesi), e l’ho inserito accanto a una dicitura ‘Acquistando questo prodotto otterrai…’ etc.
Il problema adesso è che, visto che il plugin, come dicevo, nel dare i punti non considera i decimali, devo fare un get del prezzo (sempre diviso 10) ma eliminando i decimali, per dare all’utente la somma esatta dei punti che riceverà.
Spero di essere stato chiaro 🙂
grazie per la spiegazione, adesso la situazione mi è un po più chiara 😉
Quello che non mi è chiaro è come tu stia operando (functions.php, custom page template, modifica plugin, JS dinamico, etc.), quindi potresti voler condividere più dettagli ed eventualmente un po di codice.Assumendo tu lo voglia fare su un singolo articolo e non sull’intero carrello, e a meno che tu non voglia creare uno script (JS) dinamico, dovresti poter raccogliere l’ informazione tramite l’ID del prodotto utilizzando
wc_get_product
– puoi trovare qui la documentazione.Potresti voler utilizzare qualcosa del genere:
$your_product = wc_get_product( $product_id ); /* ottieni il prezzo desiderato */ $your_product->get_regular_price(); $your_product->get_sale_price(); $your_product->get_price();
A quel punto puoi utilizzare il cast, effettuare l’operazione che ti serve (prezzo / 10) e visualizzarlo.
Facci sapere.
-
Questa risposta è stata modificata 6 anni, 6 mesi fa da
_Y_Power. Motivo: estesa spiegazione condizionale
sto scrivendo tutto su review-order.php nella cartella checkout di woocommerce,
poiché vorrei inserire questi dati nella pagina del carrello e in una riga del riepilogo ordine (è l’intero totale del carrello ad essere diviso per 10 e non il singolo articolo):<tr> <?php global $woocommerce; ?> <?php $amount2 = $woocommerce->cart->total / 10 ?> <th>Con questo acquisto otterrai</th> <td><?php echo $amount2 ?> punti</td> </tr>
grazie!
-
Questa risposta è stata modificata 6 anni, 6 mesi fa da
capnjazz.
Salve @capnjazz
per utilizzare al meglio i preziosi consigli di @_y_power, leggendo questo
sto scrivendo tutto su review-order.php nella cartella checkout di woocommerce
il consiglio è di non sovrascrivere MAI i file di un plugin, perché al primo aggiornamento salterebbero tutte le modifiche
Meglio fare un plugin a parte, un estensione di WooCommerce, all’interno della quale scrivere il proprio codice
come tempestivamente segnalato da @cristianozanca, è consigliabile creare una tua estensione al plugin per evitare che gli aggiornamenti sovrascrivano le modifiche apportate. Sulla pagina da lui indicata è anche presente un consiglio ad hoc per la tua situazione:
If your plugin creates a front-end output, we recommend to having a templating engine in place so users can create custom template files in their theme’s WooCommerce folder to overwrite the plugin’s template files.
Una volta creato quindi il plugin e il Tema Child (o il tuo sistema di templating), sarà sufficiente inserire nel tuo nuovo file review-order.php una funzione o azione, qualcosa come:
function tuo_tema_mostra_punti(){ global $woocommerce; $points_amount = $woocommerce->cart->total / 10; ?> <tr> <th>Con questo acquisto otterrai</th> <td><?php echo intval( $points_amount ); ?> punti</td> </tr> <?php }
e richiamarla quando necessario.
Aggiornaci.
-
Questa risposta è stata modificata 6 anni, 6 mesi fa da
_Y_Power. Motivo: aggiunta formattazione per codice
-
Questa risposta è stata modificata 6 anni, 6 mesi fa da
- Il topic ‘(woocommerce) prendere il prezzo totale del carrello ma senza decimali’ è chiuso a nuove risposte.