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

概要

woocommerce_my_account_my_orders_column_$COLUMN_ID フィルタは、WooCommerce の「マイアカウント」ページの注文一覧セクションにカスタム列を追加したり、既存の列の内容を変更するために使用されるフックです。このフィルタは、特定の $COLUMN_ID に基づいて呼び出され、指定された列のコンテンツをカスタマイズします。

このフィルタは、次のような機能を実装する際によく使われます。
1. 注文リストにカスタム情報を表示する(例:配送状況、特記事項など)。
2. 注文に対するカスタムアクションを追加する(例:再注文ボタンやキャンセルボタン)。
3. 特定の条件に基づいて、注文の内容を動的に変更する。
4. ユーザーの役職(ロール)に応じて異なる情報を表示する。
5. 注文データベースから取得したメタ情報を表示する。
6. 既存の情報を表示形式を変更する(例:画像を表示するなど)。

このフィルタは、WooCommerce のバージョン 3.0 以降、WordPress のバージョン 4.0 以降で使用可能です。

構文

add_filter( 'woocommerce_my_account_my_orders_column_$COLUMN_ID', 'custom_function', 10, 2 );

パラメータ

  • $COLUMN_ID: 対象の列の ID(例:order-totalなど)。
  • $order: 現在処理中の注文オブジェクト。
  • $current_user: 現在のユーザーオブジェクト。

戻り値

カスタマイズされたコンテンツ(文字列)を返します。

この関数のアクションでの使用可能性

アクション 使用可能性
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_my_account_my_orders_column_order-status', 'add_custom_order_status_column', 10, 2 );
function add_custom_order_status_column( $column, $order ) {
    if ( $column === 'order-status' ) {
        return '発送済み';
    }
    return $column;
}

このコードは、注文リストに「注文状況」という新しい列を追加し、すべての注文に「発送済み」と表示する例です。

サンプルコード 2: ボタンを追加

add_filter( 'woocommerce_my_account_my_orders_column_order-actions', 'add_reorder_button', 10, 2 );
function add_reorder_button( $column, $order ) {
    if ( $column === 'order-actions' ) {
        $button = '<a href="' . esc_url( $order->get_reorder_url() ) . '" class="button">再注文</a>';
        return $button;
    }
    return $column;
}

このコードは、既存の「アクション」列に「再注文」ボタンを追加する例です。

サンプルコード 3: 注文メタデータの表示

add_filter( 'woocommerce_my_account_my_orders_column_custom-meta', 'display_order_meta_data', 10, 2 );
function display_order_meta_data( $column, $order ) {
    if ( $column === 'custom-meta' ) {
        $custom_meta = get_post_meta( $order->get_id(), '_custom_meta_key', true );
        return esc_html( $custom_meta );
    }
    return $column;
}

このコードは、注文リストにカスタムメタデータを表示する例です。

サンプルコード 4: 列の内容を動的に変更

add_filter( 'woocommerce_my_account_my_orders_column_order-total', 'modify_order_total_display', 10, 2 );
function modify_order_total_display( $column, $order ) {
    if ( $column === 'order-total' ) {
        return '$' . ( $order->get_total() * 1.1 ); // 税込み価格を表示
    }
    return $column;
}

このコードは、「合計」列の価格に 10% を加算して表示する例です。

サンプルコード 5: ユーザーに応じた情報表示

add_filter( 'woocommerce_my_account_my_orders_column_order-status', 'custom_order_status_for_user', 10, 2 );
function custom_order_status_for_user( $column, $order ) {
    if ( $column === 'order-status' ) {
        $current_user = wp_get_current_user();
        if ( in_array( 'administrator', (array) $current_user->roles ) ) {
            return 'すべての進捗を表示';
        }
    }
    return $column;
}

このコードは、ユーザーが管理者の場合は特定のメッセージを表示する例です。

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


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