プラグインWooCommerceのwoocommerce_product_query_meta_queryフィルタの使用方法・解説

概要

woocommerce_product_query_meta_query フィルタは、WooCommerce において商品クエリにメタクエリを追加するために使用されます。このフィルタを使用することで、特定の条件に基づいた商品一覧のカスタマイズが可能となります。特に、商品のカスタムフィールドやメタデータを利用して、特定の商品を絞り込む際によく使われます。

このフィルタは、以下のような機能を実装する際に役立ちます:
1. 特定のカスタムフィールドに基づく商品フィルタ
2. セールや特別オファーを持つ商品の絞り込み
3. 特定の在庫ステータスに基づいた商品表示
4. 独自の情報を持つ商品のクエリ
5. 商品の評価やレビューを基にした絞り込み
6. カテゴリやタグに基づく商品一覧の整理

フィルタの概要

  • 構文:

    add_filter('woocommerce_product_query_meta_query', 'your_function_name', 10, 2);
    
  • パラメータ:

    1. $meta_query – 商品クエリに追加されるメタクエリの配列。
    2. $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

この関数について質問する


上の計算式の答えを入力してください