我正在functions.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;
}
并在header中使用此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,您能指导我解决此问题吗?
更新:我也在functions.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;
}
此脚本为我工作:
// 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();
});
});
});