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

如何在WooCommerce页面布局修改函数中正确输出商品价格

如何在WooCommerce页面布局修改函数中正确输出商品价格

嘿,我来帮你搞定这个价格显示的问题!你现在的分类页布局函数里,直接用apply_filters( 'woocommerce_price', $product->get_price() )输出价格,不仅没法和你那个“无价格时显示Call for price”的函数逻辑联动,而且处理无价格场景也不够稳妥。咱们来调整一下代码:

首先,把你原来的价格输出部分替换成能兼顾两种情况的逻辑,同时用WooCommerce官方推荐的方式格式化价格。修改后的完整函数如下:

// Modify category page layout
function woocommerce_after_shop_loop_item_title_short_description() {
  global $product;
  if ( ! $product->get_short_description() ) return; ?>
  <div class="category_description_container" itemprop="description">
      <h2><?php the_field('product_title'); ?> <span class="non-bold"><?php the_field('product_subtitle'); ?></span></h2>
      <div class="category_description">
        <?php the_field('category_description'); ?>
      </div>
      <div class="category_price">
        <?php 
        // 检查产品是否设置了有效价格且可购买
        if ( $product->get_price() && $product->is_purchasable() ) {
            // 用WooCommerce官方函数格式化输出价格,自动处理货币、小数位等
            echo wc_price( $product->get_price() );
        } else {
            // 无价格时显示自定义文本
            echo esc_html__( 'Call for price', 'your-text-domain' );
        }
        ?>         
      </div>
  </div>
  <?php
}

我给你拆解一下修改的关键点:

  • 替换了价格输出方式:原来用apply_filters( 'woocommerce_price', ... )不够规范,改用wc_price()是WooCommerce官方推荐的价格格式化函数,它会自动适配你的商店货币设置,比如添加货币符号、处理小数位数,比手动调用过滤器更可靠。
  • 整合了无价格判断逻辑:增加了if条件判断,先检查产品是否有有效价格且可购买,满足条件才输出价格,否则显示“Call for price”,完美和你另一个函数的逻辑对齐。
  • 支持多语言:用esc_html__()包裹文本,方便后续做多语言适配,记得把your-text-domain换成你主题或插件的专属文本域就行。

如果你已经有一个单独的函数来返回“Call for price”(比如叫custom_call_for_price()),那可以直接把else里的代码换成echo custom_call_for_price();,这样能保持代码的复用性~

备注:内容来源于stack exchange,提问作者Chris J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:14:51