当DHL(flat_rate:7)可用时隐藏指定配送方式的需求及代码优化
解决WooCommerce中DHL可用时隐藏指定配送方式的问题
你可以通过以下优化后的代码,实现当flat_rate:7(DHL)可用时,同时隐藏flat_rate:8和flat_rate:9:
function filter_woocommerce_rates( $rates, $package ) { // 检查DHL配送方式是否存在 if ( isset( $rates['flat_rate:7'] ) ) { // 定义需要隐藏的配送方式ID数组 $hidden_rates = array( 'flat_rate:8', 'flat_rate:9' ); // 循环移除指定配送方式 foreach ( $hidden_rates as $rate_id ) { if ( isset( $rates[$rate_id] ) ) { unset( $rates[$rate_id] ); } } } return $rates; } add_filter( 'woocommerce_rates', 'filter_woocommerce_rates', 10, 2 );
代码优化说明:
- 简化判断逻辑:原代码遍历所有配送方式检测
flat_rate:7,直接用isset()检查该配送方式是否存在,更高效 - 批量处理隐藏:把需要隐藏的配送方式ID放到数组中,通过循环批量移除,后续如果需要添加更多要隐藏的方式,只需在数组中新增ID即可,扩展性更强
- 严谨性提升:移除前先检查目标配送方式是否存在,避免因不存在的ID触发错误
内容的提问来源于stack exchange,提问作者Irakli Mosidze
相关产品推荐
相关产品推荐

