Supporto » Funzionalità = Plugin » (woocommerce) prendere il prezzo totale del carrello ma senza decimali

  • capnjazz

    (@capnjazz)



    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

Stai vedendo 7 repliche - dal 1 al 7 (di 7 totali)
  • _Y_Power

    (@_y_power)

    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 2 mesi fa da  _Y_Power. Ragione: esteso esempio
    _Y_Power

    (@_y_power)

    @capnjazz,

    rileggendo la tua richiesta (GET), in realtà credo che tu stia cercando qualcosa come wp_format_decimal: puoi trovare qui la documentazione.

    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 🙂

    _Y_Power

    (@_y_power)

    @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 2 mesi fa da  _Y_Power. Ragione: estesa spiegazione condizionale
    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 2 mesi fa da  capnjazz.
    Moderatore Cristiano Zanca

    (@cristianozanca)

    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 1 mese, 3 settimane fa da  _Y_Power. Ragione: aggiunta formattazione per codice
Stai vedendo 7 repliche - dal 1 al 7 (di 7 totali)
  • Devi essere collegato per rispondere a questo topic.