2

カートの小計、カートの合計、カートのアイテム、および配送の合計が正常に機能していることを示すwoocommerceウィジェットを開発していますが、ajaxを使用して配送方法を切り替えるたびに、配送の合計とカートの合計を更新したい. 現在、ページのリロード後にのみ更新されます。この目的で利用できるフックはありますか?

4

2 に答える 2

2

これは、add_to_cart_fragmentsフィルターを使用して行うことができます。

私の実装では、AJAX で表示されるアイテムの数のみを更新しますが、合計などの更新にも使用できます。これは、カートの詳細を表示するテンプレートの通常のコードです。

<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>">
(<?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count); ?>)</a>

これは で追加されたフィルタですfunctions.php:

// Update items in cart via AJAX
add_filter('add_to_cart_fragments', 'woo_add_to_cart_ajax');
function woo_add_to_cart_ajax( $fragments ) {
    global $woocommerce;
    ob_start();
    ?>
        <a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>">(<?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count); ?>)</a>
    <?php
    $fragments['a.cart-contents'] = ob_get_clean();
    return $fragments;
}

これに関するいくつかのリソース/ドキュメントが間違いなくあります。このコードを書いたときに参照用に使用したことを覚えていますが、グーグルで検索するのは少し難しいです。

于 2013-05-02T13:48:52.100 に答える
1

これについて疑問に思っている人のために、WooThemes のサイトHEREに公式ドキュメントがあります。これをコメントに投稿できなかったことをお詫びします。評判ポイントが十分ではありません。

ただし、コードは更新されているようです。get_cart_contents_count()の代わりに を 使用するようになりcart_contents_countました。

WooThemes のドキュメントから直接コピーした新しいコード スニペットを次に示します (もちろん、コードを編集して好きなカート情報を表示できますが、両方のスニペットで同じ編集を行うようにしてください)。

テンプレートでカートの内容と合計を表示するには、次のようなものを使用します。

<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo sprintf (_n( '%d item', '%d items', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a>

カート ビューアーを ajax 化して、アイテムが (ajax 経由で) 追加されたときに更新されるようにするには、次を使用します。

<?php
// Ensure cart contents update when products are added to the cart via AJAX (place the following in functions.php)
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );
function woocommerce_header_add_to_cart_fragment( $fragments ) {
    ob_start();
    ?>
    <a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php _e( 'View your shopping cart' ); ?>"><?php echo sprintf (_n( '%d item', '%d items', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> 
    <?php

    $fragments['a.cart-contents'] = ob_get_clean();

    return $fragments;
}
于 2016-07-11T09:36:57.850 に答える