WooCommerce片段更新总项目/小计/总计



我是 usign Ajax 将项目添加到我的购物车,并尝试使用以下代码更新 WooCommerce 片段,以便项目计数、小计和总计保持同步(不刷新页面(。但是,除了内容计数外,下面的内容不起作用,但即使这样也是非常间歇性的。

我错过了什么吗?

function ajaxify_fragments( $fragments ) {
// Update cart count fragment
$fragments['.cart-items-total td'] = WC()->cart->get_cart_contents_count();
// Update cart subtotal fragment
$fragments['.cart-total td'] = WC()->cart->get_cart_subtotal();
// Update cart total fragment
$fragments['.cart-total td'] = WC()->cart->get_cart_total();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'ajaxify_fragments', 10, 1 );

经过一些进一步的研究,我通过将每个片段更新分离到它自己的函数中来解决这个问题。此外,使用ob_start()ob_get_clean()

function ajaxify_cart_count_fragments( $fragments ) {
// Turn on output buffering
ob_start();
// Content
echo '<td data-title="Items">' . WC()->cart->get_cart_contents_count() . '</td>';
// Update fragment with new content
$fragments['.cart-items-total td'] = ob_get_clean();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'ajaxify_cart_count_fragments', 10, 1 );
function ajaxify_subtotal_fragments( $fragments ) {
// Content
echo '<td data-title="Subtotal">' . WC()->cart->get_cart_subtotal() . '</td>';
// Update fragment with new content
$fragments['.cart-total td'] = WC()->cart->get_cart_subtotal();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'ajaxify_subtotal_fragments', 10, 1 );

最新更新