プラグインWooCommerceのwoocommerce_coupon_get_items_to_applyフィルタの使用方法・解説

概要

woocommerce_coupon_get_items_to_apply フィルタは、WooCommerceでクーポンを適用する際に、特定の商品やオプションに絞ってクーポンを適用する機能を実装するために使用されます。このフィルタを利用することで、特定の商品にのみクーポンを適用したり、特定の条件を満たすアイテムにのみクーポンを適用するようにカスタマイズすることができます。

このフィルタは、以下のような機能を実装する際によく使われます:

  1. 特定のカテゴリーにのみクーポンを適用
  2. 低価格商品にはクーポンを適用しない
  3. 限定商品のみにクーポンを適用
  4. セール中の商品に対してクーポンを無効にする
  5. カスタム商品属性に基づいてクーポンを適用
  6. バンドル商品に適用されるクーポンの条件を変更

構文

add_filter('woocommerce_coupon_get_items_to_apply', 'your_function_name', 10, 2);

パラメータ

  • $items_to_apply: クーポンを適用する対象アイテムの配列。
  • $coupon: 適用されるクーポンの情報を含むオブジェクト。

戻り値

  • フィルタされたアイテムの配列。

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

  • WooCommerce:バージョン 3.0 以降
  • 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_filter('woocommerce_coupon_get_items_to_apply', 'apply_coupon_to_specific_category', 10, 2);

function apply_coupon_to_specific_category($items_to_apply, $coupon) {
    $allowed_category = 'special-category';
    foreach ($items_to_apply as $key => $item) {
        if (!has_term($allowed_category, 'product_cat', $item->get_product_id())) {
            unset($items_to_apply[$key]);
        }
    }
    return $items_to_apply;
}

(引用元のページ: https://docs.woocommerce.com/wc-apidocs/source-class-WC_Coupon.html)

サンプル2:特定のカスタムフィールドに基づくクーポン適用

このサンプルでは、特定のカスタムフィールドを持つ商品にのみクーポンを適用する方法を示します。

add_filter('woocommerce_coupon_get_items_to_apply', 'apply_coupon_based_on_custom_field', 10, 2);

function apply_coupon_based_on_custom_field($items_to_apply, $coupon) {
    foreach ($items_to_apply as $key => $item) {
        $custom_field_value = get_post_meta($item->get_product_id(), 'custom_field_key', true);
        if ($custom_field_value != 'allowed_value') {
            unset($items_to_apply[$key]);
        }
    }
    return $items_to_apply;
}

(引用元のページ: https://woocommerce.com/document/persistent-cart/)

サンプル3:数量制限によるクーポン適用

このコードは、特定の数量以下の商品のみクーポンを適用するサンプルです。

add_filter('woocommerce_coupon_get_items_to_apply', 'apply_coupon_with_quantity_limit', 10, 2);

function apply_coupon_with_quantity_limit($items_to_apply, $coupon) {
    $quantity_limit = 5;
    foreach ($items_to_apply as $key => $item) {
        if ($item->get_quantity() > $quantity_limit) {
            unset($items_to_apply[$key]);
        }
    }
    return $items_to_apply;
}

(引用元のページ: https://woocommerce.com/document/discounts-using-coupons/)

サンプル4:セール中の商品にはクーポンを適用しない

このサンプルコードでは、セール中の商品にはクーポンを適用しないようにします。

add_filter('woocommerce_coupon_get_items_to_apply', 'exclude_sale_items_from_coupon', 10, 2);

function exclude_sale_items_from_coupon($items_to_apply, $coupon) {
    foreach ($items_to_apply as $key => $item) {
        if ($item->is_on_sale()) {
            unset($items_to_apply[$key]);
        }
    }
    return $items_to_apply;
}

(引用元のページ: https://woocommerce.com/document/coupons/)

サンプル5:特定の製造元の商品にのみクーポンを適用

このサンプルは、特定の製造元に関連する商品にのみクーポンを適用する方法です。

add_filter('woocommerce_coupon_get_items_to_apply', 'apply_coupon_to_specific_vendor', 10, 2);

function apply_coupon_to_specific_vendor($items_to_apply, $coupon) {
    $allowed_vendor_id = 123; // 特定の製造元ID
    foreach ($items_to_apply as $key => $item) {
        $product = $item->get_product();
        if ($product->get_manufacturer_id() != $allowed_vendor_id) {
            unset($items_to_apply[$key]);
        }
    }
    return $items_to_apply;
}

(引用元のページ: https://woocommerce.com/document/using-coupons-with-woocommerce/)

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


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