概要
woocommerce_get_product_from_item
フィルタは、WooCommerceのカートやチェックアウトプロセスで商品アイテムを処理する際に、特定の商品の情報を取得するために使われます。このフィルタを利用することで、開発者はデフォルトの動作を変更したり、特定の条件に基づいて商品データを調整したりできます。
このフィルタは、以下のような機能を実装する際によく使われます。
- カスタム商品のプロパティを取得する。
- 商品の価格や在庫状況を動的に変更する。
- 特定の条件に基づいて異なる商品データを返す。
- 商品のメタデータを追加または変更する。
- 割引やプロモーションに基づいて商品情報を調整する。
- 商品が特定の条件を満たすかどうかを判断する。
構文
add_filter('woocommerce_get_product_from_item', 'custom_function', 10, 2);
パラメータ
$item
: 現在のアイテムデータ(配列)。$cart_item_key
: アイテムに関連付けられたカート項目のキー(文字列)。
戻り値
- 商品オブジェクトまたは修正されたオブジェクト。
使用可能なプラグイン/バージョン
- 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_get_product_from_item', 'check_stock_status', 10, 2);
function check_stock_status($item, $cart_item_key) {
if (!$item->is_in_stock()) {
wc_add_notice(__('この商品は在庫切れです。'), 'error');
}
return $item;
}
引用元: https://woocommerce.com
サンプルコード2: カスタムメタデータを追加する
このコードは、取得した商品アイテムにカスタムメタデータを追加します。
add_filter('woocommerce_get_product_from_item', 'add_custom_meta_data', 10, 2);
function add_custom_meta_data($item, $cart_item_key) {
$custom_meta = get_post_meta($item->get_id(), '_custom_meta_key', true);
$item->custom_meta = $custom_meta;
return $item;
}
引用元: https://developer.woocommerce.com
サンプルコード3: 商品の価格を変更する
このコードは、特定の商品に基づいて価格を動的に変更します。
add_filter('woocommerce_get_product_from_item', 'modify_product_price', 10, 2);
function modify_product_price($item, $cart_item_key) {
if ($item->get_id() == 123) { // 商品IDが123の場合
$item->set_price(29.99); // 新しい価格を設定
}
return $item;
}
引用元: https://docs.woocommerce.com
サンプルコード4: 特定の条件に基づく商品の情報を返す
このコードは、特定の条件に基づいて異なる商品データを返します。
add_filter('woocommerce_get_product_from_item', 'conditional_product_return', 10, 2);
function conditional_product_return($item, $cart_item_key) {
if ($item->get_meta('special_condition')) {
return new WC_Product_Simple(456); // 別の商品オブジェクトを返す
}
return $item;
}
引用元: https://woocommerce.github.io
サンプルコード5: 割引情報を適用する
このコードは、特定の条件に基づいて割引を適用するための例です。
add_filter('woocommerce_get_product_from_item', 'apply_discount', 10, 2);
function apply_discount($item, $cart_item_key) {
if (some_condition()) {
$item->set_price($item->get_price() * 0.9); // 10%割引
}
return $item;
}
引用元: https://wordpress.stackexchange.com
以上のサンプルは、woocommerce_get_product_from_item
フィルタを使用して、さまざまな商品を操作する方法を示しています。