You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:50:17