概要
woocommerce_my_account_my_orders_query
フィルタは、WooCommerceの「マイアカウント」セクションにおける注文履歴のクエリをカスタマイズするために使用されるフックです。このフィルタを使うことで、ユーザーの注文の表示方法を変更することができます。通常よく使われる機能には、以下のようなものがあります。
- 特定の条件に基づく注文のフィルタリング
- 表示される注文数の変更
- 並び順の変更
- 特定のステータスの注文のみを表示
- メタデータに基づく注文のフィルタリング
- ユーザーの役割による表示内容の制御
構文
add_filter( 'woocommerce_my_account_my_orders_query', 'your_function_name', 10, 2 );
パラメータ
$query
(array): デフォルトのクエリ配列。$user_id
(int): 現在のユーザーのID。
戻り値
- array: マイアカウントの「注文」セクションで表示するためのカスタマイズされたクエリ配列。
バージョン情報
- WooCommerceのバージョン: 2.6.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
function filter_orders_by_status( $query, $user_id ) {
$query['post_status'] = 'wc-completed'; // 完了済みの注文のみ表示
return $query;
}
add_filter( 'woocommerce_my_account_my_orders_query', 'filter_orders_by_status', 10, 2 );
このコードは、マイアカウントページに表示される注文のうち、完了済みの注文のみをフィルタリングします。
サンプルコード2
function limit_orders_per_page( $query, $user_id ) {
$query['posts_per_page'] = 5; // 1ページに表示する注文の数を5件に制限
return $query;
}
add_filter( 'woocommerce_my_account_my_orders_query', 'limit_orders_per_page', 10, 2 );
このコードは、マイアカウントの注文履歴で表示される注文の数を5件に制限します。
サンプルコード3
function custom_order_sort( $query, $user_id ) {
$query['orderby'] = 'date'; // 注文を日付でソート
$query['order'] = 'DESC'; // 新しいものから表示
return $query;
}
add_filter( 'woocommerce_my_account_my_orders_query', 'custom_order_sort', 10, 2 );
このコードは、表示される注文を日付順に新しいものから並べ替えます。
サンプルコード4
function filter_orders_by_meta( $query, $user_id ) {
$query['meta_query'] = array(
array(
'key' => 'special_meta_key',
'value' => 'special_value',
'compare' => '='
)
); // 特定のメタフィールドを持つ注文のみ表示
return $query;
}
add_filter( 'woocommerce_my_account_my_orders_query', 'filter_orders_by_meta', 10, 2 );
このコードは、特定のメタフィールドを持つ注文のみを表示させるためのフィルタリングを行います。
サンプルコード5
function show_orders_for_role( $query, $user_id ) {
$user = new WP_User( $user_id );
if ( in_array( 'customer', (array) $user->roles ) ) {
$query['post_status'] = array('wc-completed', 'wc-processing'); // カスタマーの注文ステータスを完了および処理中に限定
}
return $query;
}
add_filter( 'woocommerce_my_account_my_orders_query', 'show_orders_for_role', 10, 2 );
このコードは、ユーザーの役割がカスタマーの場合に表示される注文のステータスを「完了」と「処理中」に制限します。