Как я могу запустить функцию jQuery после события ajax Woocommerce - PullRequest
0 голосов
/ 08 мая 2020

Я использую этот фильтр в функциях. php для обновления количества доступных товаров в мини-тележке Woocommerce:

// Woocommerce Ajax Count

add_filter( 'woocommerce_add_to_cart_fragments', 'wc_refresh_mini_cart_count');
function wc_refresh_mini_cart_count($fragments){
    ob_start();
    ?>
    <div class="e434-15 x-bar-content-area sticky-count">
        <?php echo WC()->cart->get_cart_contents_count(); ?>
    </div>
    <?php
        $fragments['.sticky-count'] = ob_get_clean();
    return $fragments;
}

и использовал это jQuery в заголовок для преобразования чисел счетчика в другие форматы:

// Convert Numbers to Persian Format

    jQuery(document).ready( function(){
          var els = document.querySelectorAll('.woocommerce-Price-amount, .mini_cart_item span.quantity, .sticky-count');
          els.forEach(function(item) {
          item.textContent = persianJs(item.textContent).englishNumber().toString();
        });
    });

Проблема в том, что указанный выше запрос не запускается после того, как ajax добавлен в корзину или ajax удален из корзины, поэтому я попробовал это вместо этого скрипт:

// Convert Numbers to Persian Format

jQuery(document).ready( function(){
      var els = document.querySelectorAll('.woocommerce-Price-amount, .mini_cart_item span.quantity, .sticky-count');
      els.forEach(function(item) {
      item.textContent = persianJs(item.textContent).englishNumber().toString();
    });
});

// Convert Numbers After Ajax Add or Remove Products

$( document.body ).on( 'added_to_cart removed_from_cart', function(){
      var els = document.querySelectorAll('.woocommerce-Price-amount, .mini_cart_item span.quantity, .sticky-count');
      els.forEach(function(item) {
      item.textContent = persianJs(item.textContent).englishNumber().toString();
    });
});

Но он тоже не работает, кажется, я звоню jQuery не по адресу или не в том месте, не могли бы вы рассказать мне об этой проблеме?

Обновление: Я тоже пробовал этот код в функциях. php но у меня тоже не работает:

add_action('wp_header','custom_jquery_add_to_cart_script');
function custom_jquery_add_to_cart_script(){
    if ( is_shop() || is_product_category() || is_product_tag() ): // Only for archives pages
        ?>
            <script type="text/javascript">
            $( document.body ).on( 'added_to_cart removed_from_cart', function(){
            var els = document.querySelectorAll('.woocommerce-Price-amount, .mini_cart_item span.quantity, .sticky-count');
            els.forEach(function(item) {
            item.textContent = persianJs(item.textContent).englishNumber().toString();
            });
        })(jQuery);
            </script>
        <?php
    endif;
}

1 Ответ

0 голосов
/ 08 мая 2020

У меня сработал этот скрипт:

// Convert Numbers After Ajax Add or Remove Products

jQuery(document).ready(function($){
    $('body').on( 'added_to_cart removed_from_cart', function(){
      var els = document.querySelectorAll('.woocommerce-Price-amount, .mini_cart_item span.quantity, .sticky-count');
      els.forEach(function(item) {
      item.textContent = persianJs(item.textContent).englishNumber().toString();
       });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...