如何在Woocommerce商品页面仅显示启用的配送方式?
解决WooCommerce商品页仅显示已启用配送方式的问题
你的代码目前会加载所有配送方式,核心原因是没有判断配送方式的启用状态。WooCommerce的配送方式对象自带is_enabled()方法,用来检查该方式是否已启用,只需在循环中添加这个判断即可实现需求。
修改后的完整代码如下:
add_action( 'woocommerce_product_meta_end', 'shipping_rates_single_product' ); function shipping_rates_single_product() { global $product; if ( ! $product->needs_shipping() ) return; $zones = WC_Shipping_Zones::get_zones(); echo '<div><span class="qodef-woo-meta-label"> ' . __( 'Envíos', 'woocommerce' ); echo '</span><ul>'; foreach ( $zones as $zone_id => $zone ) { $zone_shipping_methods = $zone['shipping_methods']; foreach ( $zone_shipping_methods as $index => $method ) { // 新增判断:仅处理已启用的配送方式 if ( $method->is_enabled() ) { $instance = $method->instance_settings; $cost = $instance['cost'] ? $instance['cost'] : $instance['min_amount']; echo '<li><span class="qodef-woo-meta-value">' . $instance['title'] . '<br>'; echo $instance['description'] . '</span></li>'; } } } echo '</ul></div>'; }
关键修改说明:
- 在遍历单个配送方式的循环内,添加了
if ( $method->is_enabled() )条件判断,只有当该配送方式处于后台启用状态时,才会执行后续的输出逻辑。
修改后,商品页面就只会显示你在WooCommerce后台启用的配送方式了。
内容的提问来源于stack exchange,提问作者Íako
相关产品推荐
相关产品推荐

