如何在WooCommerce不可购商品单页显示自定义提示信息
给季节性花卉添加不可购买提示的解决方案
嘿,你的需求很清晰,已经搞定了加购按钮禁用,现在只需要添加上对应的提示信息就好!我给你两种实用的方法,你可以根据自己的需求选择或者结合使用:
方法1:修改商品可用性状态文本
这个方法会直接替换WooCommerce默认的“缺货”或“可购买”文本,把季节性不可购的原因明确告诉用户,而且会在商品详情页和归档页(比如商品列表)都显示:
// 先优化你现有的 purchasable 过滤器函数(补上参数更规范) add_filter('woocommerce_is_purchasable', 'is_available', 10, 2); function is_available($purchasable, $product) { // 获取当前商品的ACF可用月份字段(传入商品ID确保准确性) $months = get_field('availability', $product->get_id()); $currentMonth = date('F'); if(in_array($currentMonth, $months)) { return true; } else { return false; } } // 添加自定义可用性提示文本 add_filter('woocommerce_get_availability', 'custom_seasonal_availability_text', 10, 2); function custom_seasonal_availability_text($availability, $product) { $months = get_field('availability', $product->get_id()); $currentMonth = date('F'); // 检查当前月份不在可用列表中时修改提示 if(!in_array($currentMonth, $months)) { // 把可用月份拼接成友好的字符串 $available_months = implode(', ', $months); // 自定义提示文本,你可以根据需要调整措辞 $availability['availability'] = sprintf('这款花卉仅在 %s 供应,当前月份无法购买。', $available_months); // 加上缺货样式类,和默认缺货样式保持一致 $availability['class'] = 'out-of-stock'; } return $availability; }
方法2:在商品详情页添加专属提示框
如果你希望在商品详情页的加购按钮位置附近,更显眼地展示提示,可以用这个方法,它会在加购按钮区域输出一个醒目的提示框:
add_action('woocommerce_single_product_summary', 'display_seasonal_unavailable_notice', 31); function display_seasonal_unavailable_notice() { global $product; $months = get_field('availability', $product->get_id()); $currentMonth = date('F'); if(!in_array($currentMonth, $months)) { $available_months = implode(', ', $months); // 输出带样式的提示框,你可以自定义样式类或者内容 echo '<div class="woocommerce-info seasonal-notice" style="padding: 1em; background-color: #fff3cd; border: 1px solid #ffeeba; border-radius: 4px;"> 温馨提示:这款花卉仅在 <strong>' . $available_months . '</strong> 供应,当前月份无法购买哦! </div>'; } }
小提示
- 如果你ACF字段里存储的是数字月份(比如1代表1月),记得把
date('F')改成date('n'),还可以用date('F', mktime(0,0,0,$month_num,1))把数字转成月份名称,让用户更容易理解。 - 提示框的样式可以根据你的网站主题调整,比如修改背景色、字体大小或者边框样式。
内容的提问来源于stack exchange,提问作者Muhammad Tauseef
相关产品推荐
相关产品推荐

