概要
woocommerce_order_item_product
フィルタは、WooCommerce における特定の商品の注文アイテムをフィルタリングする際に使用されるフックです。これにより、注文アイテムの情報をカスタマイズしたり、特定の条件に基づいて変更を加えることができます。特に以下のような機能を実装する際によく使われます:
- 注文アイテムの価格を変更する
- 商品情報にカスタムメタデータを追加する
- 商品の可用性を判断する
- 商品のステータスに基づいてアクションをトリガーする
- 商品フィルタリングやサーチ機能の強化
- レポートや分析用のデータ収集
構文
add_filter('woocommerce_order_item_product', 'your_function_name', 10, 2);
パラメータ
woocommerce_order_item_product
: フィルタ名称your_function_name
: 自作の関数名10
: 優先度(デフォルトは 10)2
: 引数の数($product
,$item
)
戻り値
$product
: フィルタ後の製品オブジェクト
使用可能なプラグインWooCommerceのバージョン
- 6.x.x以降
ワードプレスのバージョン
- 5.x.x以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_order_item_product', 'change_order_item_price', 10, 2);
function change_order_item_price($product, $item) {
if ($item->get_product_id() == 123) { // 商品IDが123の場合
$product->set_price(50); // 価格を50に変更
}
return $product;
}
引用元: https://docs.woocommerce.com/
サンプルコード2: カスタムメタデータの追加
このコードは、注文アイテムにカスタムメタデータを追加します。
add_filter('woocommerce_order_item_product', 'add_custom_meta_to_order_item', 10, 2);
function add_custom_meta_to_order_item($product, $item) {
$product->add_meta_data('custom_meta_key', 'custom_meta_value');
return $product;
}
引用元: https://www.wpbeginner.com/
サンプルコード3: 商品の可用性を判断
商品の可用性を基にフィルタリングするサンプルコードです。
add_filter('woocommerce_order_item_product', 'check_product_availability', 10, 2);
function check_product_availability($product, $item) {
if (!$product->is_in_stock()) {
// 在庫がない場合は、特定の処理を実行
$product = null; // 商品をnullに設定
}
return $product;
}
引用元: https://www.smashingmagazine.com/
サンプルコード4: 商品情報を加工
商品名をカスタマイズする例です。
add_filter('woocommerce_order_item_product', 'customize_product_name', 10, 2);
function customize_product_name($product, $item) {
$product->set_name($product->get_name() . ' (カスタム)');
return $product;
}
引用元: https://www.codexworld.com/
サンプルコード5: 商品に基づくアクションをトリガー
商品IDに基づいて特定のアクションをトリガーします。
add_filter('woocommerce_order_item_product', 'trigger_action_based_on_product', 10, 2);
function trigger_action_based_on_product($product, $item) {
if ($item->get_product_id() == 456) { // 商品IDが456の場合
do_action('my_custom_action'); // 自作のアクションをトリガー
}
return $product;
}
引用元: https://www.wpexplorer.com/