概要
woocommerce_products_widget_query_args
フィルタは、WooCommerceによる製品ウィジェットのクエリ引数をカスタマイズするために使用されるフックです。このフィルタを使用することで、製品ウィジェットの表示を柔軟に変更することができ、特定の要件に応じた製品のフィルタリングやソートが可能になります。以下のような機能実装時によく利用されます。
- 特定のカテゴリーの製品のみを表示する
- 特定のタグが付与された製品をフィルタリングする
- 製品の表示順序をカスタマイズする
- 限定セールやプロモーションのための製品を表示する
- 在庫状況に応じて製品をフィルタリングする
- ユーザーのロールに基づいて異なる製品を表示する
構文
add_filter( 'woocommerce_products_widget_query_args', 'custom_query_args', 10, 2 );
パラメータ
$query_args
: クエリ引数の配列$instance
: ウィジェットインスタンスの情報
戻り値
- カスタマイズされたクエリ引数の配列
使用可能なWooCommerceのバージョン
- WooCommerce 2.2.0以降
使用可能なWordPressのバージョン
- WordPress 4.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_products_widget_query_args', 'filter_products_by_category', 10, 2 );
function filter_products_by_category( $query_args, $instance ) {
$query_args['tax_query'][] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => '特定のカテゴリー',
);
return $query_args;
}
説明:特定のカテゴリーに基づいて製品をフィルタリングします。このコードを使うと、ウィジェットは指定したカテゴリーの製品だけを表示します。
サンプルコード 2
add_filter( 'woocommerce_products_widget_query_args', 'custom_sort_order', 10, 2 );
function custom_sort_order( $query_args, $instance ) {
$query_args['orderby'] = 'date';
$query_args['order'] = 'DESC';
return $query_args;
}
説明:製品の表示順を最新のものから古いものへと変更します。このコードを使うと、常に最新の製品が先に表示されます。
サンプルコード 3
add_filter( 'woocommerce_products_widget_query_args', 'filter_in_stock_products', 10, 2 );
function filter_in_stock_products( $query_args, $instance ) {
$query_args['meta_query'][] = array(
'key' => '_stock_status',
'value' => 'instock',
);
return $query_args;
}
説明:在庫がある製品のみを表示するためのフィルタです。このコードにより、ウィジェットは在庫がある製品だけをリストアップします。
サンプルコード 4
add_filter( 'woocommerce_products_widget_query_args', 'custom_tag_filter', 10, 2 );
function custom_tag_filter( $query_args, $instance ) {
$query_args['tax_query'][] = array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => '特定のタグ',
);
return $query_args;
}
説明:特定のタグが付与された製品のみを表示するフィルタです。このコードを使うことで、特定のタグを持つ製品がウィジェットに表示されます。
サンプルコード 5
add_filter( 'woocommerce_products_widget_query_args', 'conditional_product_display', 10, 2 );
function conditional_product_display( $query_args, $instance ) {
if ( is_user_logged_in() ) {
$query_args['meta_query'][] = array(
'key' => 'featured_product',
'value' => 'yes',
);
}
return $query_args;
}
説明:ユーザーがログインしている場合にのみ、特定のカスタムフィールドを持つ製品(例:注目の製品)を表示します。このコードにより、特定の条件を満たした場合のみ製品がリストアップされます。
これらのサンプルコードはすべて、woocommerce_products_widget_query_args
フィルタを利用して製品の表示をカスタマイズする方法の例です。