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

如何在WooCommerce可变产品未选变体时显示自定义提示文本?

WooCommerce变体产品默认库存提示实现方案

一、添加页面加载时的默认提示

不用直接修改主题的content-single-product.php,用WooCommerce的钩子更稳妥,避免主题更新丢失代码。将以下代码添加到主题的functions.php文件中:

add_action( 'woocommerce_single_product_summary', 'add_default_availability_message', 25 );
function add_default_availability_message() {
    // 仅针对可变产品显示
    if ( ! wc_product_is_type( 'variable' ) ) return;
    
    echo '<div class="woocommerce-variation-availability default-availability">选择地点和日期查看库存情况</div>';
}

如果坚持要修改主题文件,可在content-single-product.php的变体表单区域,直接插入上述HTML代码即可。

二、调整库存文本过滤器

通过woocommerce_get_availability_text过滤器确保变体选中时的库存消息正确输出:

add_filter( 'woocommerce_get_availability_text', 'custom_variation_availability_text', 10, 2 );
function custom_variation_availability_text( $text, $product ) {
    // 仅针对变体产品处理
    if ( $product->is_type( 'variation' ) ) {
        $text = $product->is_in_stock() ? '有货' : '缺货';
    }
    return $text;
}

三、添加JavaScript控制提示切换

添加以下JS代码,监听变体选择事件,切换默认提示和实际库存消息的显示:

jQuery(document).ready(function($) {
    // 初始状态隐藏WooCommerce默认的库存容器
    $('.woocommerce-variation .woocommerce-variation-availability').hide();
    
    // 监听变体选择变化
    $('form.variations_form').on('woocommerce_variation_select_change', function() {
        var $form = $(this);
        var $defaultMsg = $('.default-availability');
        var $variationAvail = $form.find('.woocommerce-variation .woocommerce-variation-availability');
        
        // 检查是否所有变体选项已选择
        var allSelected = true;
        $form.find('.variations select').each(function() {
            if ($(this).val() === '') {
                allSelected = false;
                return false;
            }
        });
        
        if (allSelected) {
            // 选中所有选项时,隐藏默认提示,显示变体库存消息
            $defaultMsg.hide();
            $variationAvail.show();
        } else {
            // 未选全时,显示默认提示,隐藏变体库存消息
            $defaultMsg.show();
            $variationAvail.hide();
        }
    });
    
    // 页面加载时触发一次检查
    $('form.variations_form').trigger('woocommerce_variation_select_change');
});

可将这段JS代码添加到主题的自定义JS区域,或者通过wp_enqueue_script函数规范加载。

补充样式(可选)

如果默认提示样式和WooCommerce自带库存消息不一致,可添加CSS统一样式:

.default-availability {
    margin: 1em 0;
    padding: 1em;
    border-radius: 4px;
    background-color: #f0f0f0;
}

内容的提问来源于stack exchange,提问作者mokorana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:37:58