概要
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;
}
このコードは、ユーザーが管理者の場合は特定のメッセージを表示する例です。