プラグインWooCommerceのwoocommerce_order_item_get_formatted_meta_dataフィルタの使用方法・解説

概要

woocommerce_order_item_get_formatted_meta_dataフィルタは、WooCommerceのオーダーアイテムのメタデータをフォーマットする際に使用されるフックです。このフィルタを使うことで、オーダーアイテムに関連するメタデータの表示内容をカスタマイズしたり、追加の情報を付加したりすることが可能です。

よく使われる機能

  • オーダーアイテムのメタデータのフォーマットをカスタマイズ
  • 特定のオーダーアイテムに追加情報を表示
  • メタデータの表示内容をローカライズ
  • メタデータの表示形式を変更
  • 特定の条件に基づいてメタデータをフィルタリング
  • 発送伝票や請求書に表示されるメタデータをカスタマイズ

構文

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'your_custom_function', 10, 2 );

パラメータ

  • $formatted_meta (array): フォーマットされたメタデータ
  • $item (WC_Order_Item): オーダーアイテムオブジェクト

戻り値

  • フォーマットされたメタデータの配列(array)

使用可能なバージョン

  • 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_order_item_get_formatted_meta_data', 'custom_format_order_item_meta', 10, 2 );
function custom_format_order_item_meta( $formatted_meta, $item ) {
    foreach ( $formatted_meta as $key => $meta ) {
        if ( 'サイズ' === $meta->key ) {
            $formatted_meta[$key]->display_key = 'カスタムサイズ';
        }
    }
    return $formatted_meta;
}

引用元: WooCommerce Hooks

サンプル 2: メタデータの追加情報

オーダーアイテムに対して新たに「カスタムメモ」というメタデータを追加します。

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'add_custom_note_to_order_item_meta', 10, 2 );
function add_custom_note_to_order_item_meta( $formatted_meta, $item ) {
    $formatted_meta[] = (object) [
        'key' => 'カスタムメモ',
        'value' => 'この商品は特別な処理が必要です。',
        'display_key' => 'カスタムメモ',
        'display_value' => 'この商品は特別な処理が必要です。',
    ];
    return $formatted_meta;
}

引用元: WooCommerce Meta Data

サンプル 3: メタデータの条件付き表示

特定の条件に基づいてメタデータを表示するサンプルです。

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'conditional_display_order_item_meta', 10, 2 );
function conditional_display_order_item_meta( $formatted_meta, $item ) {
    if ( $item->get_meta( '特定の条件' ) ) {
        $formatted_meta[] = (object) [
            'key' => '特別な通知',
            'value' => 'このアイテムは特別な条件が適用されます。',
            'display_key' => '特別な通知',
            'display_value' => 'このアイテムは特別な条件が適用されます。',
        ];
    }
    return $formatted_meta;
}

引用元: WooCommerce Conditional Logic

サンプル 4: メタデータのローカライズ

オーダーアイテムのメタデータを別の言語に翻訳するサンプルです。

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'localize_order_item_meta', 10, 2 );
function localize_order_item_meta( $formatted_meta, $item ) {
    foreach ( $formatted_meta as $key => $meta ) {
        if ( '説明' === $meta->key ) {
            $formatted_meta[$key]->display_value = translate( $meta->value, 'domain' );
        }
    }
    return $formatted_meta;
}

引用元: WooCommerce Translations

サンプル 5: メタデータの並べ替え

メタデータの表示順を変更するサンプルコードです。

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'sort_order_item_meta', 10, 2 );
function sort_order_item_meta( $formatted_meta, $item ) {
    usort( $formatted_meta, function( $a, $b ) {
        return strcmp( $a->key, $b->key );
    });
    return $formatted_meta;
}

引用元: WooCommerce Sorting Meta

これらのサンプルコードを通じて、woocommerce_order_item_get_formatted_meta_dataフィルタの使い方やカスタマイズの方法を理解することができます。各サンプルコードは異なる目的でこのフィルタを利用しており、それぞれのユースケースに応じて活用できるでしょう。

この関数について質問する


上の計算式の答えを入力してください