概要
woocommerce_recently_viewed_products_widget_query_args
フィルタは、WooCommerceの「最近見た商品」ウィジェットに表示する商品のクエリの引数を変更するために使用されます。このフィルタを利用することで、最近見た商品リストの内容をカスタマイズし、特定の条件に基づいて商品の表示制御を行うことができます。以下は、このフィルタがよく使用されるシナリオです:
- 特定のカテゴリーやタグに属する商品だけを表示
- 限定的な在庫状況の商品を除外
- 特定のユーザーに基づいたパーソナライズされた商品提案
- 商品価格範囲に基づくフィルタリング
- 特定のカスタムフィールドを持つ商品だけを表示
- 商品のタイトルや説明に特定のキーワードが含まれる商品をフィルタリング
構文
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 |