概要
woocommerce_empty_price_html
フィルターフックは、WooCommerceにおける商品価格の表示に関連するフィルタです。このフックを使用することで、価格が設定されていない商品に対して表示されるHTMLをカスタマイズできます。具体的には、特定の条件に応じて、価格がない場合のメッセージを変更したり、特定のスタイリングを追加することが可能です。
このフィルタは、以下のような機能を実装する際によく使われます。
- 商品の特別なオンリープライスを強調する。
- 製品の予約や見積もり専用表示を行う。
- 特定の条件下で商品の販売を知らせるためのカスタムメッセージを表示する。
- 在庫不足の商品の代わりにカスタムメッセージを表示する。
- 無料の製品を表現するために「無料」などの特定のテキストを表示する。
- マルチバリエーション商品の価格表示を統一する。
構文
add_filter('woocommerce_empty_price_html', 'your_custom_function', 10, 2);
パラメータ
$price_html
(string) – 価格がない場合に表示されるHTML。$product
(WC_Product) – 現在の製品オブジェクト。
戻り値
このフィルタはカスタマイズした価格のHTMLを返します。
バージョン情報
- 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_empty_price_html', function($price_html, $product) {
return '<span class="custom-message">お問い合わせください</span>';
});
このコードは、価格が設定されていない商品に対して「お問い合わせください」というカスタムメッセージを表示します。
サンプル2: 無料の製品表示
add_filter('woocommerce_empty_price_html', function($price_html, $product) {
if ($product->is_type('free')) {
return '<span>無料</span>';
}
return $price_html;
});
このコードは、特定のタイプの製品が無料である場合に「無料」と表示します。
サンプル3: 在庫切れ商品のカスタムメッセージ
add_filter('woocommerce_empty_price_html', function($price_html, $product) {
if (!$product->is_in_stock()) {
return '<span class="out-of-stock">在庫切れ</span>';
}
return $price_html;
});
このコードは、在庫がない商品に対して「在庫切れ」というメッセージを表示します。
サンプル4: カスタムスタイルの追加
add_filter('woocommerce_empty_price_html', function($price_html, $product) {
return '<span class="custom-price-style">価格未設定</span>';
});
このコードは、価格が設定されていない場合にカスタムのスタイルが適用されたメッセージを表示します。
サンプル5: 予約商品の表示
add_filter('woocommerce_empty_price_html', function($price_html, $product) {
if ($product->is_type('booking')) {
return '<span class="booking-message">予約商品です</span>';
}
return $price_html;
});
このコードは、予約商品の場合に「予約商品です」と表示します。