概要
woocommerce_product_object_query_args
フィルタは、WooCommerceにおける商品オブジェクトのクエリ引数を変更するために使用されます。このフックを使うことで、特定の条件に基づいて商品リストに影響を与えることができます。このフィルタは以下のようなケースでよく使われます。
- 特定のカテゴリーの商品を除外する。
- 販売中の商品のみに絞り込む。
- フィルタを使って、カスタムメタデータに基づく商品を取得する。
- 特定のユーザーの購入履歴に基づいて商品をフィルタリングする。
- 在庫が少ない商品を優先的に表示する。
- 定期購買商品を表示する際の制約を追加する。
このフィルタはWooCommerceバージョン3.0.0以降で使用可能で、WordPressバージョン4.0以降に対応しています。
構文
add_filter('woocommerce_product_object_query_args', 'custom_function_name', 10, 2);
パラメータ
$query_args
(array): フィルタ前のクエリ引数の配列。$instance
(WC_Product_Query): 現在のクエリインスタンス。
戻り値
- array: フィルタ後のクエリ引数の配列。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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: 特定のカテゴリを除外する
このコードは、特定のカテゴリ(ID 10)を持つ商品をクエリから除外します。
add_filter('woocommerce_product_object_query_args', function($query_args) {
$query_args['tax_query'][] = array(
'taxonomy' => 'product_cat',
'terms' => array(10),
'field' => 'term_id',
'operator' => 'NOT IN',
);
return $query_args;
});
サンプルコード2: 在庫が少ない商品を優先する
在庫が少ない商品をクエリ結果の先頭に表示するように、orderby
で指定します。
add_filter('woocommerce_product_object_query_args', function($query_args) {
$query_args['orderby'] = 'meta_value_num';
$query_args['meta_key'] = '_stock';
return $query_args;
});
サンプルコード3: メタデータで商品をフィルタリング
特定のカスタムメタデータの値が特定のものに設定されている商品を取得します。
add_filter('woocommerce_product_object_query_args', function($query_args) {
$query_args['meta_query'] = array(
array(
'key' => 'custom_meta_key',
'value' => 'desired_value',
'compare' => '='
)
);
return $query_args;
});
サンプルコード4: 販売中の商品のみ取得
このコードは、販売中の商品に制限します。
add_filter('woocommerce_product_object_query_args', function($query_args) {
$query_args['post_status'] = 'publish';
return $query_args;
});
サンプルコード5: 除外リストを設定
特定の商品IDを持つ商品をクエリから除外する例です。
add_filter('woocommerce_product_object_query_args', function($query_args) {
$query_args['post__not_in'] = array(123, 456);
return $query_args;
});
これらのサンプルコードは、WooCommerceでの商品オブジェクトクエリのフィルタリングの基本的な使い方の例です。