概要
woocommerce_product_query_meta_query
フィルタは、WooCommerce において商品クエリにメタクエリを追加するために使用されます。このフィルタを使用することで、特定の条件に基づいた商品一覧のカスタマイズが可能となります。特に、商品のカスタムフィールドやメタデータを利用して、特定の商品を絞り込む際によく使われます。
このフィルタは、以下のような機能を実装する際に役立ちます:
1. 特定のカスタムフィールドに基づく商品フィルタ
2. セールや特別オファーを持つ商品の絞り込み
3. 特定の在庫ステータスに基づいた商品表示
4. 独自の情報を持つ商品のクエリ
5. 商品の評価やレビューを基にした絞り込み
6. カテゴリやタグに基づく商品一覧の整理
フィルタの概要
-
構文:
add_filter('woocommerce_product_query_meta_query', 'your_function_name', 10, 2);
-
パラメータ:
$meta_query
– 商品クエリに追加されるメタクエリの配列。$query
– WP_Query オブジェクト。
-
戻り値: メタクエリの配列(カスタマイズされたメタクエリ)。
-
使用可能なプラグインバージョン: WooCommerce 3.0 以降
- 使用可能な WordPress バージョン: WordPress 4.0 以降
サンプルコード
サンプル1: 特定のカスタムフィールドでのフィルタリング
add_filter('woocommerce_product_query_meta_query', function($meta_query) {
$meta_query[] = array(
'key' => 'custom_field_key',
'value' => 'custom_value',
'compare' => '='
);
return $meta_query;
});
このコードは、商品が特定のカスタムフィールドの値と一致する場合のみ表示されるようにするフィルタです。
サンプル2: 特定の価格帯での絞り込み
add_filter('woocommerce_product_query_meta_query', function($meta_query) {
$meta_query[] = array(
'key' => '_price',
'value' => array(10, 50),
'compare' => 'BETWEEN',
'type' => 'NUMERIC'
);
return $meta_query;
});
このコードは、価格が10ドル以上50ドル以下の商品のみを表示するためのメタクエリを追加します。
サンプル3: 在庫がある商品のみを表示
add_filter('woocommerce_product_query_meta_query', function($meta_query) {
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'instock',
'compare' => '='
);
return $meta_query;
});
このコードは、在庫がある商品のみを表示するためのメタクエリを追加します。
サンプル4: 特定の評価以上の商品を表示
add_filter('woocommerce_product_query_meta_query', function($meta_query) {
$meta_query[] = array(
'key' => '_wc_average_rating',
'value' => 4,
'compare' => '>=',
'type' => 'NUMERIC'
);
return $meta_query;
});
このコードは、ユーザー評価が4以上の商品のみを表示するためのメタクエリを追加します。
サンプル5: 特定の日付の商品のみを表示
add_filter('woocommerce_product_query_meta_query', function($meta_query) {
$meta_query[] = array(
'key' => 'release_date',
'value' => '2023-01-01',
'compare' => '>=',
'type' => 'DATE'
);
return $meta_query;
});
このコードは、指定した日付以降にリリースされた商品のみを表示するためのメタクエリを追加します。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |