概要
woocommerce_add_to_cart_handler_$ADD_TO_CART_HANDLER
フィルタは、WooCommerceにおいて商品をカートに追加する際に特定の処理を行うためのフックです。このフィルタを使用することで、商品がカートに追加される際のデータを変更したり、追加のビジネスロジックを実行したりすることができます。具体的には、以下のような機能を実装する際によく使われます。
- 商品の価格の変更
- カスタム属性の追加
- 特定の条件に基づく商品在庫確認
- クーポン適用の追加論理
- 商品の追加時にメール通知
- 外部APIとの連携処理
構文
add_filter('woocommerce_add_to_cart_handler_$ADD_TO_CART_HANDLER', 'your_function_name', 10, 2);
パラメータ
$ADD_TO_CART_HANDLER
: 製品のIDまたは製品を追加するための処理タイプ。your_function_name
: フィルタを適用するカスタム関数名。
戻り値
カスタム処理を行った後、カートに追加するアイテムの情報を含む配列、またはそのままの状態を返します。
対象バージョン
- WooCommerce: 4.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_filter('woocommerce_add_to_cart_handler_product', 'add_custom_meta_to_cart', 10, 2);
function add_custom_meta_to_cart($product_id, $quantity) {
WC()->cart->add_to_cart($product_id, $quantity, 0, array(), array('custom_meta_key' => 'custom_meta_value'));
}
サンプルコード2: カートに追加する商品の価格を変更する
このコードは、カートに商品を追加する際にその価格を特定の条件に基づいて変更します。
add_filter('woocommerce_add_to_cart_handler_product', 'change_product_price_on_add_to_cart', 10, 2);
function change_product_price_on_add_to_cart($product_id, $quantity) {
if ($quantity > 5) {
$price = 19.99; // もし5つ以上の場合、新しい価格を設定
// 商品の価格を更新する処理
}
}
サンプルコード3: カートに追加する際に在庫を確認する
このコードは、商品をカートに追加する前に在庫状況を確認し、在庫がない場合はエラーメッセージを表示します。
add_filter('woocommerce_add_to_cart_handler_product', 'check_stock_before_adding_to_cart', 10, 2);
function check_stock_before_adding_to_cart($product_id, $quantity) {
$product = wc_get_product($product_id);
if (!$product->is_in_stock()) {
wc_add_notice(__('在庫がありません。'), 'error');
}
}
サンプルコード4: 条件付きで特定のクーポンを適用する
このコードは、特定の条件を満たす場合にクーポンを自動的に適用します。
add_filter('woocommerce_add_to_cart_handler_product', 'apply_coupon_conditionally', 10, 2);
function apply_coupon_conditionally($product_id, $quantity) {
if ($quantity > 3) {
WC()->cart->apply_coupon('DISCOUNT10');
}
}
サンプルコード5: 商品がカートに追加された時に管理者に通知する
このコードは、商品がカートに追加されると管理者にメール通知を送信します。
add_filter('woocommerce_add_to_cart_handler_product', 'notify_admin_on_add_to_cart', 10, 2);
function notify_admin_on_add_to_cart($product_id, $quantity) {
$to = get_option('admin_email');
$subject = '商品がカートに追加されました';
$message = '商品ID ' . $product_id . ' がカートに追加されました。数量: ' . $quantity;
wp_mail($to, $subject, $message);
}
これらのサンプルは、WooCommerceにおける特定の操作をカスタマイズする際の参考となるでしょう。