WooCommerce商店页显示默认变体价格的代码修改咨询
修改后代码
<div class="deal-part2-details"> <?php if($product->get_type() == "simple"){ ?> <h5><?php echo get_field('network_price_text',$p_id); ?> <?php echo $currency; echo $product->regular_price; ?>pm</h5> <h5 class="our-price"><?php echo get_field('our_price_text',$p_id); ?> : <?php echo $currency; echo $product->sale_price; ?>pm</h5> <h6><?php echo get_field('upfront_cost',$p_id); ?> <?php echo get_field('upfront_cost_text',$p_id); ?></h6> <?php }else{ $product_variations = $product->get_available_variations(); $default_variation_id = 0; // 读取后台设置的默认变体 $default_attributes = $product->get_default_attributes(); if(!empty($default_attributes)){ $default_variation_id = wc_get_product_matching_variation($product->get_id(), $default_attributes); } // 没有设置默认变体则回退到第一个可用变体 if(!$default_variation_id && !empty($product_variations)){ $default_variation_id = $product_variations[0]['variation_id']; } $variation_product = wc_get_product($default_variation_id); ?> <h5 class="network-price"><?php echo get_field('network_price_text',$p_id); ?> <?php echo $currency; echo $variation_product->regular_price; ?>pm</h5> <h5 class="our-price"><?php echo get_field('our_price_text',$p_id); ?> : <?php echo $currency; echo $variation_product->sale_price; ?>pm</h5> <!--<?php if ( $price_html = $product->get_price_html() ) : ?> <span class="price"><?php echo $price_html; ?></span> <?php endif; ?> --> <h6><?php echo get_field('upfront_cost',$p_id); ?><?php echo get_field('upfront_cost_text',$p_id); ?></h6> <?php } ?> </div>
核心修改说明
- 新增默认变体读取逻辑,优先调用WooCommerce内置方法获取你在可变产品后台设置的默认变体
- 兼容未设置默认变体的场景,没有设置时自动回退到取第一个可用变体,不会出现空值报错
- 替换原有直接实例化
WC_Product_Variation的写法,改用WooCommerce官方推荐的wc_get_product方法获取变体对象,跨版本兼容性更好
内容的提问来源于stack exchange,提问作者Davy
相关产品推荐
相关产品推荐

