概要
woocommerce_no_stock
フィルタは、WooCommerce で在庫がない商品の処理をカスタマイズするために使用されます。このフィルタを通じて、在庫がない商品をカートに追加できないようにしたり、在庫がないことを示すメッセージを変更したりするなどのカスタマイズが可能です。
よく使用されるケース
- 在庫がない商品に対してエラーメッセージをカスタマイズする。
- 在庫がない商品をカートに追加不可能にする。
- 商品ページで在庫情報を非表示にする。
- 特定のユーザーグループに対して在庫なしの商品を表示する。
- 在庫がない商品をリストから削除する機能を追加する。
- 在庫がない商品の購入リンクを非表示にする。
構文
add_filter('woocommerce_no_stock', 'your_custom_function');
パラメータ
boolean $no_stock
:在庫がない場合にtrue
になります。object $product
:現在の商品の情報。
戻り値
boolean
:カスタム処理後の在庫状態。
WooCommerce バージョン
このフィルタは、WooCommerce 2.0.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_no_stock', 'custom_no_stock_message', 10, 2);
function custom_no_stock_message($no_stock, $product) {
if ($product->get_id() === 123) { // 特定の商品の場合
wc_add_notice(__('申し訳ありませんが、在庫がありません。', 'woocommerce'), 'error');
return true;
}
return $no_stock;
}
引用元: https://woocommerce.com/
サンプルコード 2: 在庫なし商品をカートに追加不可にする
このコードは、在庫がない商品をカートに追加できないようにします。
add_filter('woocommerce_add_to_cart_validation', 'prevent_no_stock_add_to_cart', 10, 2);
function prevent_no_stock_add_to_cart($passed, $product_id) {
$product = wc_get_product($product_id);
if (!$product->is_in_stock()) {
wc_add_notice(__('この商品は在庫がありません。', 'woocommerce'), 'error');
return false;
}
return $passed;
}
引用元: https://woocommerce.com/
サンプルコード 3: 在庫なしの商品を表示しない
このサンプルでは、在庫がない商品を商品リストから非表示にします。
add_action('pre_get_posts', 'hide_out_of_stock_products');
function hide_out_of_stock_products($query) {
if (!is_admin() && $query->is_main_query() && is_shop()) {
$query->set('meta_query', array(
array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
)
));
}
}
引用元: https://woocommerce.com/
サンプルコード 4: 特定のユーザーに在庫なし商品を表示する
このコードは、特定のユーザーグループに対して在庫がない商品を表示します。
add_filter('woocommerce_product_is_visible', 'show_no_stock_for_specific_user', 10, 2);
function show_no_stock_for_specific_user($visible, $product_id) {
if (current_user_can('administrator')) { // 管理者の場合
return true; // 在庫がない商品も表示する
}
return $visible; // その他のユーザーは通常通り
}
引用元: https://woocommerce.com/
サンプルコード 5: 在庫がない商品の詳細ページをカスタマイズ
このコードは、在庫がない商品の詳細ページで特定のメッセージを表示します。
add_action('woocommerce_single_product_summary', 'custom_no_stock_message_on_product_page', 20);
function custom_no_stock_message_on_product_page() {
global $product;
if (!$product->is_in_stock()) {
echo '<div class="stock out-of-stock">在庫がありません。次回入荷をお待ちください。</div>';
}
}
引用元: https://woocommerce.com/