Получите все классы доставки в Woocommerce 3

Я не смог расколоть этот орешек, но не могу избавиться от ощущения, что мне не хватает чего-то простого.

Я разрабатываю плагин WooCommerce, который должен предоставлять список классов доставки на странице настроек администратора. Следующий код, предложенный в ответе на другой вопрос, указывает на то, что следующее должно работать:

$shipping           = new \WC_Shipping();
$shipping_classes   = $shipping->get_shipping_classes();
var_dump($shipping_classes);
die();

К сожалению, на выходе получается пустой массив.

Я использую Wordpress 4.9.5 и WooCommerce 3.3.5. Спасибо за любую помощь!

ОБНОВИТЬ У меня точно такая же проблема, как описано здесь: get_terms () возвращает неверную таксономию и предоставили обходной путь. Однако я не думаю, что это решение.

Вы пытаетесь узнать все классы доставки или способы доставки? Кроме того, пробовали ли вы убрать косую черту перед WC_Shipping();?

Frits 15.04.2018 19:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
1
2 338
1

Ответы 1

Чтобы получить все классы доставки, вам понадобится следующее:

$shipping_classes = get_terms( array('taxonomy' => 'product_shipping_class', 'hide_empty' => false ) );

Проверено и работает. Это даст вам массив объектов WP_Term всех классов доставки.

In Woocommerce the shipping classes are under product_shipping_class custom taxonomy.


Или вы можете использовать эту настраиваемую функцию с простым запросом SQL:

function wc_get_shipping_classes(){
    global $wpdb;
    $return $wpdb->get_results( "
        SELECT * FROM {$wpdb->prefix}terms as t
        INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON t.term_id = tt.term_id
        WHERE tt.taxonomy LIKE 'product_shipping_class'
    " );
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).

ИСПОЛЬЗОВАНИЕ (тестовый пример):

$shipping_classes = wc_get_shipping_classes(); // Get Shipping Classes
echo '<pre>'; print_r($shipping_classes); echo '</pre>'; // Test raw output   

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

mike.bronner 16.04.2018 18:25

@ mike.bronner Очень, странно, потому что все классы доставки - это термины из настраиваемой таксономии "product_shipping_class" в Woocommerce. Итак, Я обновил свой ответ, добавив второй способ… Попробуй.

LoicTheAztec 16.04.2018 18:46

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

mike.bronner 17.04.2018 02:09

Другие вопросы по теме