概要
woocommerce_order_get_items
は、WooCommerceの注文オブジェクトに関連付けられたアイテムの取得をカスタマイズするためのフィルタです。このフィルタを使用することで、注文に関連するアイテムの表示を変更したり、特定の追加情報を付加したりすることができます。
このフィルタは以下のような機能を実装する際によく使われます。
- 注文アイテムにカスタムフィールドを追加する
- 特定の条件に基づいてアイテムをフィルタリングする
- アイテムの金額や数量を動的に変更する
- アイテムの表示形式をカスタマイズする
- 注文内容に特典情報やプロモーションを追加する
- アイテム情報のローカライズや翻訳を行う
構文
add_filter('woocommerce_order_get_items', 'your_custom_function', 10, 2);
パラメータ
$items
: 注文アイテムの配列$order
: 対象の注文オブジェクト
戻り値
- カスタマイズされた注文アイテムの配列
使用可能なWooCommerceのバージョン
- WooCommerce 2.1以降
使用可能なWordPressのバージョン
- 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_order_get_items', 'add_custom_field_to_order_items', 10, 2);
function add_custom_field_to_order_items($items, $order) {
foreach ($items as $item_id => $item) {
$items[$item_id]->custom_field = 'カスタムフィールドの値';
}
return $items;
}
このコードは、各注文のアイテムに「カスタムフィールド」というプロパティを追加しています。これにより、追加の情報を表示や処理に利用できます。
サンプル2: アイテムの価格を変更する
add_filter('woocommerce_order_get_items', 'modify_item_price', 10, 2);
function modify_item_price($items, $order) {
foreach ($items as $item_id => $item) {
$item->get_total(); // 現在の価格を取得
$new_price = $item->get_total() * 1.1; // 10%増加させる
$items[$item_id]->set_total($new_price); // 新しい価格を設定
}
return $items;
}
このコードは、各アイテムの価格を10%増加させる機能を持っています。価格の変更が必要な場合に有用です。
サンプル3: 特定の商品をフィルタリングする
add_filter('woocommerce_order_get_items', 'filter_order_items_by_product', 10, 2);
function filter_order_items_by_product($items, $order) {
foreach ($items as $item_id => $item) {
if ($item->get_product_id() == 123) { // 商品ID 123をフィルタリング
unset($items[$item_id]); // 該当商品を削除
}
}
return $items;
}
このコードは、特定の商品のアイテムを注文リストから削除します。特定の商品が不要な場合に使用できます。
サンプル4: アイテム情報をローカライズする
add_filter('woocommerce_order_get_items', 'localize_order_item_data', 10, 2);
function localize_order_item_data($items, $order) {
foreach ($items as $item_id => $item) {
$items[$item_id]->name = __('商品名', 'text-domain'); // 商品名を翻訳
}
return $items;
}
このコードは、サイトの翻訳に基づいてアイテム名を変更します。多言語対応のサイトで役立ちます。
サンプル5: アイテムにプロモーション情報を追加する
add_filter('woocommerce_order_get_items', 'add_promotion_info_to_items', 10, 2);
function add_promotion_info_to_items($items, $order) {
foreach ($items as $item_id => $item) {
$items[$item_id]->promotion = 'キャンペーン中'; // プロモーション情報を追加
}
return $items;
}
このコードは、注文の各アイテムにプロモーション情報を追加します。特別なオファーやキャンペーンがある場合に便利です。