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

概要

woocommerce_cart_loaded_from_sessionは、WooCommerceのカートがセッションから読み込まれる際に発火するアクションフックです。このフックを使用することで、カートが読み込まれた後に特定の処理を実行することができます。一般的に、このアクションは次のような機能を実装する際によく使われます:

  1. カート内のアイテムのカスタムフィルタリング
  2. ユーザーのロールや権限に基づいた商品表示の調整
  3. カート更新時のクーポンコードの適用
  4. 商品の在庫状態のチェック
  5. 特定の商品に対するアラートの表示
  6. カートに追加された際のトラッキングコードの実行

構文

add_action( 'woocommerce_cart_loaded_from_session', 'your_custom_function' );

パラメータ

このアクションには特定のパラメータはありません。

戻り値

このアクションは特に戻り値を持ちません。単に指定した関数を実行します。

使用可能なプラグインおよびバージョン

  • WooCommerce: バージョン5.0以降
  • WordPress: バージョン5.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_loaded_from_session', 'custom_adjust_cart_items' );

function custom_adjust_cart_items() {
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        // 商品に応じて特定の操作を実行
        if( isset($cart_item['product_id']) && $cart_item['product_id'] === 123 ) {
            // 商品ID 123 の特別な処理
        }
    }
}

このコードは、カートがセッションから読み込まれるたびに、商品IDが123のアイテムに特別な処理を追加するものです。

サンプルコード2

add_action( 'woocommerce_cart_loaded_from_session', 'custom_check_coupon_code' );

function custom_check_coupon_code() {
    if ( isset( $_POST['coupon_code'] ) ) {
        WC()->cart->apply_coupon( sanitize_text_field( $_POST['coupon_code'] ) );
    }
}

このコードは、カートが読み込まれた際に、クーポンコードが送信されていればそれを適用する機能です。

サンプルコード3

add_action( 'woocommerce_cart_loaded_from_session', 'custom_alert_product_stock' );

function custom_alert_product_stock() {
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $product = wc_get_product( $cart_item['product_id'] );
        if( !$product->is_in_stock() ) {
            wc_add_notice( __('この商品は在庫切れです', 'your-textdomain'), 'error' );
        }
    }
}

このコードは、カート内の商品が在庫切れの場合にエラーメッセージを表示します。

サンプルコード4

add_action( 'woocommerce_cart_loaded_from_session', 'custom_cart_tracked' );

function custom_cart_tracked() {
    // トラッキングコードを含むスクリプトを追加
    echo "<script>console.log('カートが読み込まれました');</script>";
}

このコードは、カートがセッションから読み込まれる際に、コンソールにメッセージを表示するスクリプトを追加します。

サンプルコード5

add_action( 'woocommerce_cart_loaded_from_session', 'custom_discount_on_product' );

function custom_discount_on_product() {
    $discounted_product_id = 456; // 割引対象商品ID
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        if( $cart_item['product_id'] == $discounted_product_id ) {
            $discount = 10; // 10%の割引
            WC()->cart->cart_contents[$cart_item_key]['data']->set_price( $cart_item['data']->get_price() * ( 1 - $discount / 100 ) );
        }
    }
}

このコードは、特定の商品に対して10%の割引を適用します。カートがセッションから読み込まれた際に実行されます。

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


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