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 fa da _Y_Power. Motivo: esteso esempio
@capnjazz,
rileggendo la tua richiesta (GET), in realtà credo che tu stia cercando qualcosa come wp_format_decimal
: puoi trovare qui la documentazione.
Chi ha creato la discussione
capnjazz
(@capnjazz)
@_y_power
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 🙂
@capnjazz,
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 fa da _Y_Power. Motivo: estesa spiegazione condizionale
Chi ha creato la discussione
capnjazz
(@capnjazz)
@_y_power
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 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
https://docs.woocommerce.com/document/create-a-plugin/
@capnjazz,
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 fa da _Y_Power. Motivo: aggiunta formattazione per codice