概要
woocommerce_my_account_my_orders_query
は、WooCommerceの「マイアカウント」セクションにおける注文履歴のクエリをフィルタリングするために使用されるフックです。このフィルタを利用することで、ユーザーの過去の注文情報をカスタマイズしたり、特定の条件に基づいて表示内容を変更したりすることができます。具体的な使用例としては以下のようなものがあります。
- 特定のステータスの注文のみを表示する。
- 表示する注文の数を制限する。
- 特定のユーザーの過去の注文を除外する。
- 注文の並び順を変更する。
- 最近の注文を優先的に表示する。
- カスタムメタデータに基づいて注文をフィルタリングする。
構文
add_filter( 'woocommerce_my_account_my_orders_query', 'custom_my_orders_query', 10, 2 );
function custom_my_orders_query( $args, $customer_id ) {
// カスタマイズするコード
return $args;
}
パラメータ
$args
: WP_Query用の配列。この配列には注文の検索条件が含まれています。$customer_id
: 現在のユーザー(顧客)のID。
戻り値
このフィルタは、カスタマイズされたクエリの引数の配列を返します。
対応するプラグインおよびバージョン
- 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_my_account_my_orders_query', 'filter_processing_orders', 10, 2 );
function filter_processing_orders( $args, $customer_id ) {
$args['post_status'] = 'wc-processing'; // このステータスの注文のみ表示
return $args;
}
参考URL: https://docs.woocommerce.com/document/woocommerce-hooks/
サンプルコード 2: 注文の数を制限
このコードは、注文履歴で最初の5件の注文のみを表示します。
add_filter( 'woocommerce_my_account_my_orders_query', 'limit_orders_display', 10, 2 );
function limit_orders_display( $args, $customer_id ) {
$args['posts_per_page'] = 5; // 表示する注文の数を5に設定
return $args;
}
参考URL: https://woocommerce.com/document/woocommerce-shortcodes/
サンプルコード 3: 特定のメタデータでフィルタリング
このサンプルコードでは、特定のカスタムメタデータを持つ注文のみを表示します。
add_filter( 'woocommerce_my_account_my_orders_query', 'filter_by_custom_meta', 10, 2 );
function filter_by_custom_meta( $args, $customer_id ) {
$args['meta_query'] = array(
array(
'key' => '_custom_meta_key',
'value' => 'specific_value',
'compare' => '='
),
);
return $args;
}
参考URL: https://codex.wordpress.org/Class_Reference/WP_Query
サンプルコード 4: 注文の並び順を変更
このコードは、注文を最新のものから表示するように並び替えます。
add_filter( 'woocommerce_my_account_my_orders_query', 'order_by_date', 10, 2 );
function order_by_date( $args, $customer_id ) {
$args['orderby'] = 'date'; // 日付で並び替える
$args['order'] = 'DESC'; // 最新の注文を最初に表示
return $args;
}
参考URL: https://developer.wordpress.org/reference/classes/wp_query/#order
サンプルコード 5: 最近の注文を優先的に表示
このサンプルでは、顧客の最近の注文を優先的に表示するためのコードです。
add_filter( 'woocommerce_my_account_my_orders_query', 'recent_orders_first', 10, 2 );
function recent_orders_first( $args, $customer_id ) {
$args['meta_key'] = '_order_date'; // 注文日でソート
$args['orderby'] = 'meta_value'; // メタ値で並び替える
$args['order'] = 'DESC'; // 最新のものが上にくる
return $args;
}
参考URL: https://woocommerce.com/document/woocommerce-shortcodes/