概要
woocommerce_status_widget_out_of_stock_count_pre_query
フィルタは、WooCommerceの在庫状況ウィジェットの「在庫切れ商品の数」を取得するためのSQLクエリを変更するために使用されます。このフィルタにより、カスタム条件を適用して在庫切れ商品の数を調整できるため、特定の要件に合わせて柔軟にウィジェットの動作をカスタマイズすることができます。
このフィルタは、以下のような機能を実装する際によく使われます:
1. 特定のカテゴリーの商品だけを考慮する。
2. カスタムメタデータに基づく在庫状態のカウント。
3. 特定のユーザー権限を持つ商品だけをカウントする。
4. 特定のタグを持つ商品だけを対象とする。
5. セール中の商品を除外する。
6. 在庫切れ商品に特定の条件を追加する。
構文
add_filter('woocommerce_status_widget_out_of_stock_count_pre_query', 'custom_function');
パラメータ
- $query (WP_Query): 変更するWP_Queryオブジェクト。
戻り値
- フィルタ後のWP_Queryオブジェクト。
バージョン
このフィルタは、WooCommerceのバージョン3.0以降で使用可能です。また、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_status_widget_out_of_stock_count_pre_query', function($query) {
$query->set('tax_query', array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'example-category',
),
));
return $query;
});
引用元: https://www.example.com/sample1
サンプル2: カスタムメタデータを使用する
このサンプルでは、カスタムメタデータに基づいて在庫切れ商品をカウントします。
add_filter('woocommerce_status_widget_out_of_stock_count_pre_query', function($query) {
$query->set('meta_query', array(
array(
'key' => '_custom_meta_key',
'value' => 'some_value',
),
));
return $query;
});
引用元: https://www.example.com/sample2
サンプル3: 権限に基づくフィルタリング
このサンプルでは、特定のユーザー権限を持つ商品だけを考慮します。
add_filter('woocommerce_status_widget_out_of_stock_count_pre_query', function($query) {
if (current_user_can('administrator')) {
$query->set('post_status', 'publish');
}
return $query;
});
引用元: https://www.example.com/sample3
サンプル4: 特定のタグを持つ商品をカウント
このサンプルでは、特定のタグを持つ在庫切れ商品だけを数えます。
add_filter('woocommerce_status_widget_out_of_stock_count_pre_query', function($query) {
$query->set('tax_query', array(
array(
'taxonomy' => 'product_tag',
'field' => 'slug',
'terms' => 'example-tag',
),
));
return $query;
});
引用元: https://www.example.com/sample4
サンプル5: 在庫切れ商品に特定の条件を追加
このサンプルでは、在庫切れだが特定のメタ情報を持つ商品だけをカウントします。
add_filter('woocommerce_status_widget_out_of_stock_count_pre_query', function($query) {
$query->set('meta_query', array(
array(
'key' => '_stock_status',
'value' => 'outofstock',
),
));
return $query;
});
引用元: https://www.example.com/sample5