概要
woocommerce_get_min_max_price_meta_query
フィルタは、WooCommerceの価格フィルタリング機能を拡張するために使用されます。このフィルタを使用することで、カスタムの価格範囲クエリをデータベースに追加し、商品の最小価格や最大価格を効率的に取得することができます。特に次のような機能を実装する際に役立ちます:
- 特定の商品の価格帯に基づくフィルタリング機能
- カスタム商品クエリの最適化
- 商品検索の効率化
- 商品一覧ページの速度向上
- 特定のカスタムフィールドを持つ商品のフィルタリング
- ユーザーインターフェースの拡張と強化
構文
add_filter( 'woocommerce_get_min_max_price_meta_query', 'custom_function_name', 10, 2 );
パラメータ
$meta_query
: 既存のメタクエリ配列$price_query
: 価格に関するクエリ情報
戻り値
- 修正されたメタクエリ配列
使用可能なプラグインとワードプレスのバージョン
- WooCommerce バージョン: 5.0以降
- WordPress バージョン: 5.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_get_min_max_price_meta_query', 'custom_price_meta_query', 10, 2 );
function custom_price_meta_query( $meta_query, $price_query ) {
$meta_query[] = array(
'key' => '_custom_price_field',
'value' => array( $price_query['min_price'], $price_query['max_price'] ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC'
);
return $meta_query;
}
引用元: https://www.example.com/sample1
サンプル2: 複数の商品タイプのサポート
このサンプルでは、異なる商品タイプ(通常、割引)の価格を調整します。
add_filter( 'woocommerce_get_min_max_price_meta_query', 'custom_product_type_price_query', 10, 2 );
function custom_product_type_price_query( $meta_query, $price_query ) {
$meta_query[] = array(
'relation' => 'OR',
array(
'key' => '_price',
'value' => array( $price_query['min_price'], $price_query['max_price'] ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC'
),
array(
'key' => '_sale_price',
'value' => array( $price_query['min_price'], $price_query['max_price'] ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC'
)
);
return $meta_query;
}
引用元: https://www.example.com/sample2
サンプル3: 特定のカスタム属性に基づくクエリ
特定のカスタム商品属性に基づいて価格をフィルタリングします。
add_filter( 'woocommerce_get_min_max_price_meta_query', 'custom_attribute_price_query', 10, 2 );
function custom_attribute_price_query( $meta_query, $price_query ) {
$meta_query[] = array(
'key' => 'custom_attribute',
'value' => 'desired_value',
'compare' => '='
);
return $meta_query;
}
引用元: https://www.example.com/sample3
サンプル4: サイズオプションによる価格フィルタリング
このコードは、特定のサイズオプションの商品の価格をフィルタリングします。
add_filter( 'woocommerce_get_min_max_price_meta_query', 'size_option_price_query', 10, 2 );
function size_option_price_query( $meta_query, $price_query ) {
$meta_query[] = array(
'key' => 'product_size',
'value' => 'M',
'compare' => '='
);
return $meta_query;
}
引用元: https://www.example.com/sample4
サンプル5: 特定のカテゴリーに基づく価格クエリ
特定の商品のカテゴリーに基づいて価格をフィルタリングします。
add_filter( 'woocommerce_get_min_max_price_meta_query', 'category_price_query', 10, 2 );
function category_price_query( $meta_query, $price_query ) {
$meta_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'specific-category',
'operator' => 'IN',
);
return $meta_query;
}
引用元: https://www.example.com/sample5