プラグインWooCommerceのwoocommerce_cart_contents_changedアクションの使用方法・解説

概要

woocommerce_cart_contents_changed アクションは、WooCommerceのカート内容が変更された際に実行されるフックです。ショッピングカートのアイテムが追加、削除、更新されるたびにこのフックがトリガーされます。具体的な機能としては、以下のような場面でよく使われます。

  1. カートの合計金額を再計算する
  2. クーポンや割引の適用を確認する
  3. ユーザーに通知を表示する
  4. 外部システムにカート情報を送信する
  5. 追加の計算を行うためのカスタムロジックを実装する
  6. ユーザープロフィールの更新を反映させる

構文

add_action( 'woocommerce_cart_contents_changed', 'function_name' );

パラメータ

  • なし

戻り値

  • なし

使用可能なWooCommerceのバージョン

  • WooCommerce 2.1以上

使用可能なWordPressのバージョン

  • WordPress 4.0以上

この関数のアクションでの使用可能性

アクション 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード 1

このサンプルコードは、カートが変更されるたびにカート合計をリフレッシュする機能を実装しています。

add_action( 'woocommerce_cart_contents_changed', 'refresh_cart_total' );

function refresh_cart_total() {
    WC()->cart->calculate_totals();
}

(引用元: WooCommerceデベロッパーガイド)

サンプルコード 2

このサンプルコードは、カートにアイテムが追加されたときにカスタムメッセージを表示します。

add_action( 'woocommerce_cart_contents_changed', 'notify_cart_change' );

function notify_cart_change() {
    wc_add_notice( 'カートの内容が変更されました', 'notice' );
}

(引用元: WooCommerceデベロッパーガイド)

サンプルコード 3

このサンプルコードでは、カートが変更された際に外部APIにカート情報を送信します。

add_action( 'woocommerce_cart_contents_changed', 'send_cart_to_api' );

function send_cart_to_api() {
    $cart_contents = WC()->cart->get_cart();
    wp_remote_post( 'https://example.com/api/cart', array(
        'method'    => 'POST',
        'body'      => json_encode( $cart_contents ),
        'headers'   => array( 'Content-Type' => 'application/json' ),
    ));
}

(引用元: WooCommerceデベロッパーガイド)

サンプルコード 4

このサンプルコードは、特定の条件でアイテムがカートに追加されたとき、特典を付与します。

add_action( 'woocommerce_cart_contents_changed', 'apply_special_bonus' );

function apply_special_bonus() {
    if ( WC()->cart->get_cart_contents_count() > 3 ) {
        WC()->cart->add_fee( '特別ボーナス', -10 ); // 10ドルの割引
    }
}

(引用元: WooCommerceデベロッパーガイド)

サンプルコード 5

このサンプルコードは、カートが変更されたときにログファイルに情報を書き込む機能を実装しています。

add_action( 'woocommerce_cart_contents_changed', 'log_cart_changes' );

function log_cart_changes() {
    $log = 'カートが変更されました: ' . print_r( WC()->cart->get_cart(), true ) . "n";
    error_log( $log, 3, '/path/to/cart_changes.log' );
}

(引用元: WooCommerceデベロッパーガイド)

この関数について質問する


上の計算式の答えを入力してください