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

概要

woocommerce_recently_viewed_products_widget_query_args フィルタは、WooCommerceの「最近見た商品」ウィジェットに表示する商品のクエリの引数を変更するために使用されます。このフィルタを利用することで、最近見た商品リストの内容をカスタマイズし、特定の条件に基づいて商品の表示制御を行うことができます。以下は、このフィルタがよく使用されるシナリオです:

  1. 特定のカテゴリーやタグに属する商品だけを表示
  2. 限定的な在庫状況の商品を除外
  3. 特定のユーザーに基づいたパーソナライズされた商品提案
  4. 商品価格範囲に基づくフィルタリング
  5. 特定のカスタムフィールドを持つ商品だけを表示
  6. 商品のタイトルや説明に特定のキーワードが含まれる商品をフィルタリング

構文

add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'custom_recently_viewed_products_query_args' );

パラメータ

  • $args: クエリ引数の配列。これを変更することで出力される商品をカスタマイズする。

戻り値

  • 変更後のクエリ引数の配列。

使用可能なプラグインWooCommerceのバージョン

  • WooCommerce 3.0 以降

WordPressのバージョン

  • WordPress 4.0 以降

サンプルコード

サンプル 1: 特定のカテゴリーの商品を表示する

このサンプルでは、最近見た商品の中から特定のカテゴリーに属する商品だけを表示します。

add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'filter_recently_viewed_products_by_category' );

function filter_recently_viewed_products_by_category( $args ) {
    $args['tax_query'] = array(
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => 'specific-category', // 対象のカテゴリーのスラッグ
        ),
    );
    return $args;
}

引用元: https://woocommerce.com

サンプル 2: 在庫のない商品を除外する

このサンプルは、在庫がない商品を最近見た商品リストから除外します。

add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'exclude_out_of_stock_products' );

function exclude_out_of_stock_products( $args ) {
    $args['meta_query'] = array(
        array(
            'key'     => '_stock_status',
            'value'   => 'instock',
        ),
    );
    return $args;
}

引用元: https://woocommerce.com

サンプル 3: ユーザーの好みに合わせた商品を表示

このサンプルは、特定のユーザーIDに基づいて表示する商品を制限します。

add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'customize_recently_viewed_based_on_user' );

function customize_recently_viewed_based_on_user( $args ) {
    if ( is_user_logged_in() ) {
        $current_user_id = get_current_user_id();
        // ユーザーの特定条件に基づいてクエリを調整
    }
    return $args;
}

引用元: https://woocommerce.com

サンプル 4: 価格でフィルタリング

このサンプルでは、価格範囲に基づいて最近見た商品リストを絞り込みます。

add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'filter_recently_viewed_products_by_price' );

function filter_recently_viewed_products_by_price( $args ) {
    $args['meta_query'][] = array(
        'key'     => '_price',
        'value'   => array( 10, 50 ),
        'compare' => 'BETWEEN',
        'type'    => 'NUMERIC',
    );
    return $args;
}

引用元: https://woocommerce.com

サンプル 5: 特定のカスタムフィールドを持つ商品を表示

このサンプルは、特定のカスタムフィールドを持つ商品だけを表示するようにしています。

add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'filter_recently_viewed_products_by_custom_field' );

function filter_recently_viewed_products_by_custom_field( $args ) {
    $args['meta_query'][] = array(
        'key'   => 'custom_field_key',
        'value' => 'custom_field_value',
    );
    return $args;
}

引用元: https://woocommerce.com

この関数のアクションでの使用可能性

アクション名 使用可能性
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

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


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