如何获取无shipping class的WooCommerce产品并设置对应运费
修复WooCommerce产品页面运费显示问题
你的代码问题出在无shipping class的判断逻辑被嵌套在了!empty($shipping_class)的条件块里,导致没有设置shipping class的产品根本不会执行到这段判断。下面是修改后的代码:
add_action('woocommerce_single_product_summary', 'display_product_shipping_class', 15 ); function display_product_shipping_class(){ global $product; $shipping_class = $product->get_shipping_class(); // 处理有shipping class的产品 if( ! empty($shipping_class) ) { $term = get_term_by( 'slug', $shipping_class, 'product_shipping_class' ); if( is_a($term, 'WP_Term') ){ echo '<p class="product-shipping-class">' . $term->name . '</p>'; if( $shipping_class == 'pavolum'){ echo '<p class="tarif">Livraison à Tarif=10dt</p>'; } elseif( $shipping_class == 'pvolum'){ echo '<p class="tarif">Livraison à Tarif=15dt</p>'; } } } // 处理无shipping class的产品 else { echo '<p class="tarif">Livraison à Tarif=7dt</p>'; } }
关键改动说明:
- 移除了外层包裹整个逻辑的
if( ! empty($shipping_class) ),改为分别判断有/无shipping class的情况 - 用
else直接处理无shipping class的场景,逻辑更清晰 - 将多个独立
if改为elseif,减少不必要的判断执行
内容的提问来源于stack exchange,提问作者Mehdi
相关产品推荐
相关产品推荐

