概要
woocommerce_cart_contents_changed
アクションは、WooCommerceのカート内容が変更された際に実行されるフックです。ショッピングカートのアイテムが追加、削除、更新されるたびにこのフックがトリガーされます。具体的な機能としては、以下のような場面でよく使われます。
- カートの合計金額を再計算する
- クーポンや割引の適用を確認する
- ユーザーに通知を表示する
- 外部システムにカート情報を送信する
- 追加の計算を行うためのカスタムロジックを実装する
- ユーザープロフィールの更新を反映させる
構文
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デベロッパーガイド)