如何在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.
相关产品推荐
相关产品推荐

