【发布时间】:2019-05-31 00:23:06
【问题描述】:
我正在使用Hide specifics Flat Rates when Free Shipping is available in WooCommerce 3 稍微更改了答案代码来隐藏除一种以外的所有运输方式。我想要显示的唯一方法是来自"Woocommerce Advanced Shipping" plugin 的速率。
我正在使用正确的费率 ID 等...
一切正常,除了当客户尝试点击该送货方式时,它不会保持选中状态。它只是跳回免费送货。
我已经尝试过调试,还尝试了带有原生 woocommerce 统一费率 ID 的代码,它显示/能够选择它就好了。
add_filter( 'woocommerce_package_rates', 'conditionally_hide_shipping_methods', 100, 2 );
function conditionally_hide_shipping_methods( $rates, $package ) {
$flat_rates_express = array( '2588' );
$free = $flat2 = array();
foreach ( $rates as $rate_key => $rate ) {
// Updated Here To
if ( in_array( $rate->id, $flat_rates_express ) )
$flat2[ $rate_key ] = $rate;
if ( 'free_shipping:12' === $rate->id )
$free[ $rate_key ] = $rate;
}
return ! empty( $free ) ? array_merge( $free, $flat2 ) : $rates;
}
我要保持显示的 ID:“2588”(来自插件的自定义运费)
当可以免费送货时,我如何禁用统一运费方式或保持自定义运费(来自插件)?
【问题讨论】:
-
您的代码有效,但问题是
'2588'不是正确的运费 ID 参考...请参阅 this screenshot,它显示了如何使用浏览器代码检查器获取正确的运费 ID。 -
@LoicTheAztec 这是显示值为“2588”的屏幕截图我应该使用“shipping_method_0_2588”吗? gyazo.com/35ae5e3f9cd9f1095fbc0391423c0bec
-
您的运输插件正在制作非常奇怪的运输方式费率 ID……它似乎是
2588(值),但不是shipping_method_0_2588,它是 DOM html 标记 ID。您的代码有效(使用 woocommerce 运输方式测试),但可能是您的插件运输方式费率 ID 不... -
@LoicTheAztec 是的,它适用于本地 woocom 运费。至于插件运费,基本功能也可以正常工作(它隐藏了所有其他费率)。但它只是不让我点击它。有没有办法在不联系开发人员的情况下找到答案?
-
或者@sormano 也许你可以插话?
标签: php wordpress woocommerce cart shipping-method