Избегайте запуска функции только один раз при нажатии кнопки в корзине WooCommerce - PullRequest
2 голосов
/ 20 мая 2019

Я пытаюсь запускать функцию cart_refresh_update_qty при каждом нажатии кнопки update_cart, но она работает только в первый раз, если я обновлю корзину снова, она не запустится снова, мне нужно перезагрузить страницу?

Это некоторый пользовательский код в моем файле функций дочерних тем WordPress.

<?php
//
// Recommended way to include parent theme styles.
//  (Please see http://codex.wordpress.org/Child_Themes#How_to_Create_a_Child_Theme)
//  
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
    get_stylesheet_directory_uri() . '/style.css',
    array('parent-style')
    );
}
// register add to cart action
    add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_add_to_cart', 10 );
/*
global $product;       
if ( in_category('listone-sample')) {   
    add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_add_to_cart', 10 );
}
*/

add_action( 'woocommerce_before_shipping_calculator', 'cart_refresh_update_qty',10); 
function cart_refresh_update_qty() { 
   if (is_cart()) { 
      ?> 
      <script type="text/javascript"> 
     jQuery("input[name = 'update_cart']").on('click', function(){ 
         alert('Cart Qty Changed, Shipping total will be updated.');
     jQuery("[name='calc_shipping']").trigger("click"); 
    }); 
     </script> 
     <?php 
   } 
}
?>

Я не вижу сообщений об ошибках.

1 Ответ

2 голосов
/ 20 мая 2019

Вместо этого используйте следующее, как document.body делегированное событие:

add_action( 'wp_footer', 'cart_refresh_update_qty');
function cart_refresh_update_qty() {
    if (is_cart()) :
    ?>
    <script type="text/javascript">
    jQuery( function($){
        $(document.body).on('click', 'button[name="update_cart"]', function(){
            console.log('Cart Qty Changed, Shipping total will be updated.');
            $('button[name="calc_shipping"]').trigger('click');
        });
    });
    </script>
    <?php
    endif;
}

Код помещается в файл functions.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Теперь он не только запустится с первого раза…

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...