概要
woocommerce_status_widget_low_in_stock_count_pre_query
は、WooCommerceダッシュボードの「在庫」ウィジェットでローレベルの在庫商品のカウントを行う際に使用されるフィルタです。このフィルタを利用することで、デフォルトのクエリを変更し、特定の条件に基づいて低在庫商品の数を調整することができます。
このフィルタは、以下のような機能を実装する際によく使われます:
1. 特定のカテゴリーやタグに基づいた在庫カウントのカスタマイズ。
2. 在庫管理のレポートに特定のメタデータを考慮する。
3. 外部のAPIやデータベースと連携した在庫情報の反映。
4. 特定のユーザー権限に基づいた在庫の表示制御。
5. 地域や店舗別にカウントを分ける機能の追加。
6. 在庫商品の表示条件にセール価格を考慮するカスタマイズ。
構文
add_filter('woocommerce_status_widget_low_in_stock_count_pre_query', 'my_custom_low_stock_query', 10, 2);
パラメータ
$query
: WP_Queryオブジェクト。低在庫商品のクエリを設定するために変更可能。$this
: 現在のオブジェクト。WooCommerceのクラスインスタンス。
戻り値
フィルタを通じて返されるクエリオブジェクトが、ウィジェットに表示される低在庫商品のカウントに影響を与えます。
対応バージョン
- WooCommerce: 4.0以上
- WordPress: 5.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_low_in_stock_count_pre_query', 'count_special_offer_low_stock', 10, 2);
function count_special_offer_low_stock($query, $this) {
$query->set('tax_query', array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'special-offers',
),
));
return $query;
}
// URL: https://docs.woocommerce.com/document/woocommerce-status-widget/
サンプル 2: メタデータに基づいた在庫表示
このサンプルでは、商品の在庫メタデータを確認して、特定の条件に合致する商品のみをカウントします。
add_filter('woocommerce_status_widget_low_in_stock_count_pre_query', 'filter_based_on_meta', 10, 2);
function filter_based_on_meta($query, $this) {
$meta_query = $query->get('meta_query', array());
$meta_query[] = array(
'key' => '_is_custom_stock',
'value' => 'yes',
'compare' => '='
);
$query->set('meta_query', $meta_query);
return $query;
}
// URL: https://developer.wordpress.org/reference/functions/add_filter/
サンプル 3: 特定のユーザーの在庫表示
このサンプルコードは、特定のユーザーのための在庫商品のカウントを調整します。
add_filter('woocommerce_status_widget_low_in_stock_count_pre_query', 'user_specific_low_stock', 10, 2);
function user_specific_low_stock($query, $this) {
if (current_user_can('administrator')) {
return $query; // 管理者の場合、デフォルトのクエリを使用
}
$query->set('author', get_current_user_id());
return $query;
}
// URL: https://www.smashingmagazine.com/2020/09/wordpress-filter-hooks/
サンプル 4: 地域別在庫カウント
このコードは、地域ごとの在庫を表示するためにクエリ条件を追加します。
add_filter('woocommerce_status_widget_low_in_stock_count_pre_query', 'region_based_stock_query', 10, 2);
function region_based_stock_query($query, $this) {
$region = 'west'; // 例: 地域を"west"に設定
$query->set('meta_query', array_merge($query->get('meta_query', array()), array(
array(
'key' => 'region',
'value' => $region,
'compare' => '='
)
)));
return $query;
}
// URL: https://www.sitepoint.com/wordpress-filter-hooks/
サンプル 5: セール価格を考慮した在庫カウント
このコードは、商品のセール価格が設定されている場合のみ在庫をカウントします。
add_filter('woocommerce_status_widget_low_in_stock_count_pre_query', 'count_low_stock_on_sale', 10, 2);
function count_low_stock_on_sale($query, $this) {
$meta_query = $query->get('meta_query', array());
$meta_query[] = array(
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
);
$query->set('meta_query', $meta_query);
return $query;
}
// URL: https://wordpress.org/support/article/wordpress-hooks/