我正在使用woocommerce,发现我可以在免费送货时隐藏送货方式。
但现在问题是我需要隐藏两个而不是一个。当我尝试隐藏两种方法时,整个页面都会变黑。
我需要专家帮我解决。提前感谢一百万!!
// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'hide_standard_shipping_when_free_is_available' , 10, 1 );
/**
* Hide Standard Shipping option when free shipping is available
*
* @param array $available_methods
*/
function hide_standard_shipping_when_free_is_available( $available_methods ) {
if( isset( $available_methods['free_shipping'] ) AND isset( $available_methods['local_delivery'], ['flat_rate'] ) ) {
// remove standard shipping option
unset( $available_methods['local_delivery'], ['flat_rate'] );
}
return $available_methods;
}
答案 0 :(得分:0)
我已经制作了一个高级免费送货选项的插件。这包括在免费提供时隐藏其他运输的选项。
您可能会喜欢它:http://wordpress.org/plugins/woocommerce-advanced-free-shipping/
答案 1 :(得分:0)
WooCommerce高级免费送货插件很好但是 免费送货时隐藏其他送货方式无效。 该插件可以在woocommerce管理员设置上启用,但检查隐藏其他送货方式的选项无法检查并保存。我尝试在WP选项db上覆盖它,但似乎它也不起作用。插件代码似乎有问题。
答案 2 :(得分:0)
add_filter('woocommerce_package_rates', 'xa_hide_shipping_rates_when_free_is_available', 10, 2);
function xa_hide_shipping_rates_when_free_is_available($rates, $package)
{
global $woocommerce;
$version = "2.6";
if (version_compare($woocommerce->version, $version, ">=")) {
foreach( $rates as $key => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
$free_shipping = $rates[$key];
// Unset all rates.
$rates = array();
// Restore free shipping rate.
$rates[$key] = $free_shipping;
return $rates;
}
}
}
else {
if (isset($rates['free_shipping'])) {
// Below code is for unsetting single shipping method/option.
// unset($rates['flat_rate']);
$free_shipping = $rates['free_shipping'];
// Unset all rates.
$rates = array();
// Restore free shipping rate.
$rates['free_shipping'] = $free_shipping;
}
}
return $rates;
有关详细信息,请参阅此link