Я использую Скрыть конкретные тарифы, когда в WooCommerce доступна бесплатная доставка. 3 слегка изменил код ответа, чтобы скрыть все способы доставки, кроме одного. Единственный способ, который я хочу показать - это тариф из плагина "Woocommerce Advanced Shipping" .
Я использую правильный ID ставки и т. Д. *
Все работает нормально, кроме случаев, когда клиент пытается выбрать этот способ доставки, он не останется выбранным. Он просто возвращается к бесплатной доставке.
Я попробовал отладку, а также попробовал код с собственным идентификатором единой ставки woocommerce, и он обнаружился / смог выбрать его просто отлично.
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" (пользовательский тариф доставки из плагина)
Как отключить метод доставки по фиксированной ставке, когда доступна бесплатная доставка o, и сохранить пользовательский тариф доставки (из плагина)?