概要
woocommerce_coupon_get_items_to_apply
フィルタは、WooCommerceでクーポンを適用する際に、特定の商品やオプションに絞ってクーポンを適用する機能を実装するために使用されます。このフィルタを利用することで、特定の商品にのみクーポンを適用したり、特定の条件を満たすアイテムにのみクーポンを適用するようにカスタマイズすることができます。
このフィルタは、以下のような機能を実装する際によく使われます:
- 特定のカテゴリーにのみクーポンを適用
- 低価格商品にはクーポンを適用しない
- 限定商品のみにクーポンを適用
- セール中の商品に対してクーポンを無効にする
- カスタム商品属性に基づいてクーポンを適用
- バンドル商品に適用されるクーポンの条件を変更
構文
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/)