概要
woocommerce_cart_updated
アクションは、WooCommerceのカートが更新されるたびにトリガーされるフックです。このアクションは、カートの内容が変更された際に、特定のカスタム処理を実行するのに役立ちます。例えば、カートのアイテム数や合計金額に基づいて、特定のロジックを実行したり、ユーザーにメッセージを表示したりすることができます。
よく使われる機能には、次のようなものがあります:
1. カートの合計金額に基づくディスカウントの適用
2. カート更新時にユーザーに通知メッセージを表示
3. 在庫状況の確認と警告メッセージの表示
4. ユーザーのカート内容を定期的に監視
5. 特定の条件に基づくクーポンの自動適用
6. ユーザーの行動に基づいたアナリティクスの収集
構文
do_action('woocommerce_cart_updated');
パラメータ
- このアクションにはパラメータはありません。
戻り値
- 戻り値はありません。
使用可能なバージョン
- WooCommerceのバージョン: 2.0.0 以降
- WordPressのバージョン: 4.0 以降
サンプルコード
サンプルコード 1: カート更新時にメッセージを表示
このコードは、カートが更新されたときにユーザーにメッセージを表示します。
add_action('woocommerce_cart_updated', 'display_cart_updated_message');
function display_cart_updated_message() {
wc_add_notice('カートが更新されました。', 'success');
}
引用元: https://woocommerce.com/
サンプルコード 2: カートにアイテムを追加する際のアクション
このコードは、カート更新時に特定の商品が含まれている場合、追加のアクションを実行します。
add_action('woocommerce_cart_updated', 'check_cart_for_product');
function check_cart_for_product() {
$cart = WC()->cart->get_cart();
foreach ($cart as $cart_item_key => $cart_item) {
if ($cart_item['product_id'] == 123) { // 商品ID123
// 特別な処理をここに書く
}
}
}
引用元: https://developer.woocommerce.com/
サンプルコード 3: カート合計に基づく送信メッセージ
このコードは、カートの合計金額が特定の金額を超えた場合にメッセージを表示します。
add_action('woocommerce_cart_updated', 'notify_large_cart');
function notify_large_cart() {
$total = WC()->cart->total;
if ($total > 100) {
wc_add_notice('お得!カート合計が100ドルを超えました。', 'notice');
}
}
引用元: https://woocommercewp.com/
サンプルコード 4: 対象商品がカートに追加された時の特典
このコードでは、特定の商品がカートに追加された際に特典を提供します。
add_action('woocommerce_cart_updated', 'offer_special_discount');
function offer_special_discount() {
$cart = WC()->cart->get_cart();
foreach ($cart as $cart_item_key => $cart_item) {
if (isset($cart_item['product_id']) && $cart_item['product_id'] === 456) {
WC()->cart->add_fee('特別割引', -10);
}
}
}
引用元: https://wpbeginner.com/
サンプルコード 5: カート更新時の在庫チェック
このコードでは、カート更新時に在庫が不足している商品があるかを確認し、警告メッセージを表示します。
add_action('woocommerce_cart_updated', 'check_stock_on_cart_update');
function check_stock_on_cart_update() {
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$product_id = $cart_item['product_id'];
$product = wc_get_product($product_id);
if (!$product->is_in_stock()) {
wc_add_notice($product->get_name() . 'は在庫切れです。', 'error');
}
}
}
引用元: https://www.cloudways.com/
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |