在WooCommerce首页和分类页显示默认变体价格、常规价及节省金额
在WooCommerce首页和分类页显示默认变体价格、常规价格及节省金额
嗨,我帮你完善了代码,刚好能满足你在WooCommerce首页和分类页显示默认变体价格、常规价格以及节省金额的需求。下面是完整的解决方案:
完整代码实现
add_filter( 'woocommerce_get_price_html', 'custom_variable_price_display', 10, 2 ); add_filter( 'woocommerce_variable_price_html', 'custom_variable_price_display', 10, 2 ); function custom_variable_price_display( $price, $product ) { // 仅在首页和产品分类页生效,避免干扰其他页面的价格展示 if ( ! is_front_page() && ! is_product_category() ) { return $price; } // 只处理可变类型产品 if ( ! $product->is_type('variable') ) { return $price; } // 获取产品设置的默认变体 $default_attrs = $product->get_default_attributes(); $default_variation_id = $product->get_matching_variation( $default_attrs ); // 如果没有设置默认变体,返回原有价格格式 if ( ! $default_variation_id ) { return $price; } // 获取默认变体的价格数据 $variation = wc_get_product( $default_variation_id ); $regular_price = (float) $variation->get_regular_price(); $sale_price = (float) $variation->get_sale_price(); $saved_amount = $regular_price - $sale_price; // 格式化价格显示:促销价+删除线常规价+节省金额 if ( $sale_price && $sale_price < $regular_price ) { $price = wc_price( $sale_price ) . ' <del>' . wc_price( $regular_price ) . '</del>'; $price .= ' <span class="saved-amount">节省: ' . wc_price( $saved_amount ) . '</span>'; } else { // 如果没有促销价,只显示常规价格 $price = wc_price( $regular_price ); } return $price; }
代码说明
- 页面范围限制:通过
is_front_page()和is_product_category()判断,只在首页和分类页应用这个价格格式,不影响产品详情页的原有交互。 - 针对可变产品:只有可变产品才会触发自定义逻辑,普通简单产品保持原有价格显示。
- 默认变体获取:精准获取你在产品后台设置的默认变体,确保显示的是你想要的那个变体价格,而不是默认的最低/最高价区间。
- 价格格式化:如果变体有促销价,会显示促销价+删除线划掉的常规价,再加上明确的节省金额;没有促销价时,只显示常规价格。
使用方法
你可以把这段代码添加到:
- 当前主题的
functions.php文件末尾(注意备份主题文件,避免更新丢失); - 或者使用专门的自定义代码插件(比如Code Snippets)来添加,这种方式更安全,不会因为主题更新丢失代码。
内容的提问来源于stack exchange,提问作者DVJy
相关产品推荐
相关产品推荐

