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

Woocommerce缺货商品:如何让产品描述在变体前正常显示?

解决WooCommerce缺货商品产品描述不显示问题

问题根源

当商品缺货时,WooCommerce默认不会渲染「添加到购物车」表单,导致woocommerce_before_add_to_cart_form钩子无法触发,你挂载的产品描述自然不会显示。

解决方案

优先推荐使用更通用的钩子替代,避免依赖表单渲染逻辑:

方案1:改用woocommerce_single_product_summary钩子

这个钩子在产品摘要区域始终触发,不受库存状态影响,且能精准控制显示位置:

// 移除默认产品描述的原有挂载
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);

// 将产品描述挂载到变体/加购按钮之前的位置
add_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 15);
  • 默认产品描述的优先级是20,变体及加购按钮相关内容一般在25-30区间,设置为15可确保描述显示在它们之前。
  • 如果是你自定义的描述内容,可替换为自己的输出函数:
add_action('woocommerce_single_product_summary', 'render_my_custom_product_description', 15);
function render_my_custom_product_description() {
    // 自定义描述输出逻辑,例如调用产品内容或自定义字段
    echo '<div class="product-custom-description">' . get_the_content() . '</div>';
}

方案2:修改缺货商品模板(不推荐,需维护)

如果坚持使用原钩子,需覆盖WooCommerce的产品模板,确保缺货状态下仍触发钩子:

  1. 复制WooCommerce模板文件(如single-product/add-to-cart/variable.php或simple.php)到你的主题目录对应的woocommerce/子文件夹中。
  2. 修改缺货判断代码,在分支中手动触发钩子:
<?php if ( $product->is_in_stock() ) : ?>
    <?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>
    <!-- 原表单代码 -->
    <?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
<?php else : ?>
    <?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>
    <!-- 缺货提示内容 -->
    <?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
<?php endif; ?>

注意:WooCommerce版本更新时,需要同步更新模板文件,否则可能出现兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:30:52