Aggiornamento automatico del carrello dopo la modifica della quantità

26 giu 2017, 10:43:53
Visualizzazioni: 34.9K
Voti: 3

Sto cercando di aggiornare automaticamente il carrello di WooCommerce dopo che la quantità viene modificata. Il seguente codice nel file function.php funziona, MA aggiorna il carrello solo se cambio la quantità due volte. Sapete come risolvere questo problema?

add_action( 'wp_footer', 'cart_update_qty_script' );
function cart_update_qty_script() {
    if (is_cart()) :
    ?>
    <script>
        jQuery('div.woocommerce').on('change', '.qty', function(){
            jQuery("[name='update_cart']").trigger("click"); 
        });
    </script>
    <?php
    endif;
}
0
Tutte le risposte alla domanda 3
1

Con quasi un anno di ritardo, ma questa domanda potrebbe ancora ricevere visitatori: Attivi il click, ma il pulsante non ha abbastanza tempo per diventare abilitato, ecco perché quando clicchi la seconda volta il pulsante risulta abilitato. Rimuovi la proprietà "disabled" prima di attivare il click:

    <script>
    jQuery('div.woocommerce').on('change', '.qty', function(){
        jQuery("[name='update_cart']").prop("disabled", false);
        jQuery("[name='update_cart']").trigger("click"); 
    });
    </script>
24 mag 2018 11:07:58
Commenti

Esattamente quello che stavo cercando. Ho appena creato una gist per questo https://gist.github.com/kamaroly/0f1c6ec6c90a6c44dca3254317298278

Kamaro Kamaro
17 dic 2018 10:14:30
0

Il tuo codice sopra funziona molto bene nel mio sistema locale. Non so perché non funzioni nel tuo sistema. Ma puoi provare a scrivere il codice JS come segue-

add_action( 'wp_footer', 'cart_update_qty_script' );
function cart_update_qty_script() {
    if (is_cart()) :
        ?>
        <script type="text/javascript">
            (function($){
                $(function(){
                    $('div.woocommerce').on( 'change', '.qty', function(){
                        $("[name='update_cart']").trigger('click');
                    });
                });
            })(jQuery);
        </script>
        <?php
    endif;
}

È un approccio più preciso e pulito secondo me.

Spero che quanto sopra possa esserti d'aiuto.

26 giu 2017 14:21:04
0

Ho creato un plugin gratuito Ajax Cart AutoUpdate per aggiornare la pagina del carrello e i totali del mini-carrello quando cambia la quantità del prodotto. Ha delle utili opzioni aggiuntive, ma anche lo script da solo offre un supporto più ampio ai browser e un'esperienza utente molto migliore.

Le chiamate Ajax non vengono inviate continuamente grazie al ritardo di aggiornamento introdotto, nell'esempio fornito è di 1000 millisecondi, ma il codice effettivo del plugin utilizza il valore specificato nelle impostazioni. Funziona così:

"L'aggiornamento del carrello viene ritardato di un numero di millisecondi dall'ultima azione che ha modificato la quantità, specificato dall'utente nelle impostazioni (predefinito 1000). Significa che l'aggiornamento verrà attivato solo una volta, quando l'utente ha finito di apportare modifiche."

Inoltre, per i fanatici della velocità della pagina, ricordate che se volete differire jQuery, è meglio caricare gli script usando wp_enqueue_script, con la dipendenza da jQuery impostata, perché uno script inline con jQuery fallirebbe in tal caso.

var timeout;

jQuery('div.woocommerce').on('change keyup mouseup', 'input.qty', function(){ // keyup e mouseup per supporto a Firefox
    if (timeout != undefined) clearTimeout(timeout); //annulla l'evento precedentemente programmato
    if (jQuery(this).val() == '') return; //quantità vuota, invece di rimuovere l'articolo dal carrello, non fare nulla
    timeout = setTimeout(function() {
        jQuery('[name="update_cart"]').trigger('click');
    }, 1000 ); // programma l'evento di aggiornamento carrello con un ritardo di 1000 millisecondi
});
11 mag 2019 20:18:45