概要
フィルタ woocommerce_get_wp_query_args
は、WooCommerceの商品のクエリ引数を変更するフックです。このフィルタを使用することで、商品一覧ページや検索結果ページの表示内容を柔軟にカスタマイズできます。主に以下のような機能を実装する際によく使用されます。
- 商品の表示順序を変更する
- 特定のカテゴリーの商品を除外または追加する
- 商品の表示数を変更する
- メタデータを基に商品のフィルタリングを行う
- 複数のカスタムフィルタリングオプションを提供する
- 特定の条件に応じてクエリを変更する
構文
add_filter( 'woocommerce_get_wp_query_args', 'custom_query_args', 10, 2 );
パラメータ
$query_args
(array): WooCommerceで使用されるクエリ引数を含む配列。$this
(object): 現在のクエリオブジェクト。
戻り値
- array: 修正されたクエリ引数の配列。
WooCommerceのバージョン
- 使用可能なバージョン: WooCommerce 2.1以降
WordPressのバージョン
- 使用可能なバージョン: WordPress 4.0以降
サンプルコード
サンプルコード1: 商品の表示順序をカスタマイズする
function custom_order_by_price( $query_args ) {
$query_args['orderby'] = 'meta_value_num';
$query_args['meta_key'] = '_price';
$query_args['order'] = 'ASC';
return $query_args;
}
add_filter( 'woocommerce_get_wp_query_args', 'custom_order_by_price' );
このサンプルコードは、商品の表示を価格の昇順に変更しています。
サンプルコード2: 特定のカテゴリーを除外する
function exclude_category_from_query( $query_args ) {
$query_args['tax_query'][] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'excluded-category',
'operator' => 'NOT IN',
);
return $query_args;
}
add_filter( 'woocommerce_get_wp_query_args', 'exclude_category_from_query' );
このサンプルコードは、「excluded-category」というカテゴリーの商品を除外します。
サンプルコード3: 表示数を変更する
function modify_product_count( $query_args ) {
$query_args['posts_per_page'] = 12; // 表示数を12に設定
return $query_args;
}
add_filter( 'woocommerce_get_wp_query_args', 'modify_product_count' );
このサンプルコードは、商品一覧ページの表示数を12に設定します。
サンプルコード4: メタデータに基づいてフィルタリングする
function filter_by_custom_meta( $query_args ) {
$query_args['meta_query'] = array(
array(
'key' => 'custom_meta_key',
'value' => 'custom_value',
'compare' => '=',
),
);
return $query_args;
}
add_filter( 'woocommerce_get_wp_query_args', 'filter_by_custom_meta' );
このサンプルコードは、カスタムメタデータに基づいて商品をフィルタリングします。
サンプルコード5: 特定の条件に応じたクエリの変更
function dynamic_query_change( $query_args ) {
if ( is_product_category( 'special-category' ) ) {
$query_args['posts_per_page'] = 5; // 特定カテゴリーの表示数を5に設定
}
return $query_args;
}
add_filter( 'woocommerce_get_wp_query_args', 'dynamic_query_change' );
このサンプルコードは、「special-category」というカテゴリーのページの場合、表示数を5に設定します。
この関数のアクションでの使用可能性
アクション | 使用可能 |
---|---|
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 |