Задать вопрос
@Muvka

Как вывести способы доставки на главной?

Я смог доковыряться только до instance_id, но я не могу найти запрос к таблице wp_options, который достает инфу о методах доставки.
$WC_Shipping_Zone_Data_Store = new WC_Shipping_Zone_Data_Store();
print_r($WC_Shipping_Zone_Data_Store->get_methods(1, true));

Разобрался чуть больше. Нашел класс WC_Shipping_Zones. У него есть метод get_zones(). Кто подскажет, можно его использовать? Просто у него есть метод get_shipping_method( $instance_id ). Наверно будет гораздо медленнее, если я в этот метод буду передавать по одному instance_id, которые я получаю в коде выше...
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Muvka Автор вопроса
Нашел решение вопроса.
foreach(WC_Shipping_Zones::get_zones()[1]['shipping_methods'] as $method) {
  if($method->id === 'flat_rate') {
    echo '<li>' . $method->instance_settings['title'] . ': ' . wc_price($method->instance_settings['cost']) . '</li>';
  }
}

[1] - это страны. У меня она одна)

Дополнение. Для 2 методов время обработки: 0.026161с
А вот в таком виде скрипт срабатывает гораздо быстрее:
$WC_Shipping_Zone_Data_Store = new WC_Shipping_Zone_Data_Store();
foreach($WC_Shipping_Zone_Data_Store->get_methods(1, true) as $method) {
  if($method->method_id === 'flat_rate') {
    $m = WC_Shipping_Zones::get_shipping_method($method->instance_id);
    echo '<li>' . $m->instance_settings['title'] . ': ' . wc_price($m->instance_settings['cost']) . '</li>';
  }
}

Время работы скрипта:0.004519
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы