Скрыть указать c способ доставки, когда в WooCommerce доступна бесплатная доставка - PullRequest
0 голосов
/ 10 марта 2020

Я могу найти множество фрагментов кода, чтобы скрыть другие варианты доставки при бесплатной доставке или скрыть все, кроме Local Pickup. Я хочу скрыть все, кроме локальной доставки и тарифа, который я установил для расширенной доставки (или, другими словами, я хочу скрыть только вариант стандартной доставки). Я испортил несколько битов кода, которые нашел, но не могу заставить его работать.

Ниже приведен один пример кода, который я нашел на Github, который скрывает все, кроме бесплатной доставки и сбора, и я знаю идентификатор метода доставки Я тоже хочу показать, но не могу это реализовать.

function hide_shipping_when_free_is_available( $rates, $package ) {
    $new_rates = array();
    foreach ( $rates as $rate_id => $rate ) {
        // Only modify rates if free_shipping is present.
        if ( 'free_shipping' === $rate->method_id ) {
            $new_rates[ $rate_id ] = $rate;
            break;
        }
    }

    if ( ! empty( $new_rates ) ) {
        //Save local pickup if it's present.
        foreach ( $rates as $rate_id => $rate ) {
            if ('local_pickup' === $rate->method_id ) {
                $new_rates[ $rate_id ] = $rate;
                break;
            }
        }
        return $new_rates;
    }

    return $rates;
}

add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );
...