Как получить самую низкую стоимость доставки по фиксированной ставке в WooCommerce

Я хочу просто: я хочу отображать самую низкую фиксированную стоимость доставки на странице продукта в WooCommerce, чтобы я мог отображать: «Мы уже доставляем заказы от € ...».

Не имеет значения, какая зона доставки в стране клиента активна ... Мне просто нужна общая (статическая) минимальная фиксированная стоимость.

Пока у меня есть это:

foreach ((array) $delivery_zones as $key => $delivery_zone ) {

    $shipping_costs = [];

    foreach ($delivery_zone['shipping_methods'] as $value) {
        $shipping_costs[] = $value->cost;
        break;
    }

    echo (min($shipping_costs));
}                           

Но это по-прежнему выводит ВСЕ фиксированные затраты f.i .: 1,99 3,99 5,99

Как я могу отображать только самую низкую (в данном случае 1,99) ставку?

Много tnx!


person YorlinqNL    schedule 04.10.2019    source источник
comment
Можете ли вы сказать нам, какой крючок вы используете для редактирования страницы продукта или предоставить нам снимок экрана, на котором показаны текущие ставки на странице продукта?   -  person MrEbabi    schedule 04.10.2019
comment
В моем случае я не использую крючки. Я только что создал небольшой плагин для отображения различной информации о заказе (например, стоимости, дня доставки и т. Д.) Для отображения на странице продукта. Это отвечает на ваш вопрос? Надеюсь, у вас есть awnjser :)   -  person YorlinqNL    schedule 04.10.2019


Ответы (1)


Я думаю, что это простая ошибка, попробуйте следующее:

function get_lowest_shipping_flat_rate_1()
{
    $delivery_zones = WC_Shipping_Zones::get_zones(); 

    //define the array outside of the loop
    $shipping_costs = [];
    $min_zone = "";

    //get all costs in a loop and store them in the array
    foreach ((array) $delivery_zones as $key => $the_zone ) {

    foreach ($the_zone['shipping_methods'] as $value) {
        $shipping_costs[] = $value->cost;
        if(min($shipping_costs) == $value->cost) $min_zone = $the_zone['zone_name'];
        }
    }

    $content = $min_zone . " - " . get_woocommerce_currency_symbol() . " " . min($shipping_costs);

    return $content;
}
person MrEbabi    schedule 04.10.2019
comment
Это действительно выводит только 1 значение, но не самое низкое. Когда я изменил фиксированную цену 1,99 на 11,99, она показала 11,99, а не новый минимум 3,99. Похоже, всегда отображается только первая строка ... В этом есть смысл? - person YorlinqNL; 04.10.2019
comment
Ну, я только что снова протестировал код, создав новую более дешевую фиксированную ставку, а также изменив минимальную фиксированную ставку (я имею в виду два разных теста), у меня он работает нормально ... - person MrEbabi; 04.10.2019
comment
Понятно ... Что ж, это, вероятно, связано с разными зонами доставки, которые я использую. Ваш код, вероятно, отлично работает в одной зоне. Спасибо за работу, друг мой :) К сожалению, я не могу им пользоваться. Я должен искать глубже. - person YorlinqNL; 04.10.2019
comment
Я думаю, это должно сработать и для вас, в любом случае я надеюсь, что вы найдете лучшее решение. Хорошего дня. - person MrEbabi; 04.10.2019
comment
Я только что попробовал ваш отредактированный код (без BREAK), но этот код ничего не выводит, поэтому я снова попробовал ваш первый код (желая верить, что он должен работать), но опять же, это не так. Независимо от того, меняю ли я цены доставки, конечная цена всегда будет такой же, как и стоимость доставки. Может быть, продукция заказана по тарифу NAME, а не по тарифу доставки? - person YorlinqNL; 04.10.2019
comment
Да, я думаю, что это ключ к разгадке .... Когда я даю обеим ЗОНАМ доставки ОДНО ИМЯ, ваш код (тот, что с ПЕРЕРЫВОМ) работает ... Так, может быть, простое изменение кодов исправит это? - person YorlinqNL; 04.10.2019
comment
Не могли бы вы попробовать обновленный код? Скопируйте и вставьте его в functions.php, затем просто напишите echo get_lowest_shipping_flat_rate_1 (); , Работаю на моем тестовом веб-сайте: eyupgulsen.com/test/urun/sunglasses - person MrEbabi; 04.10.2019
comment
Я собираюсь решить это по-другому, но хочу поблагодарить вас за вашу помощь. - person YorlinqNL; 04.10.2019