Запросить все продукты без API, используя wc_get_products в Woocommerce

В Woocommerce я пытаюсь получить все продукты, использующие wc_get_products(), следующим образом:

$args = array( 'status' => 'publish' );
$products = wc_get_products( $args );
return $products;

Но он возвращает пустую строку.

Как я могу получить все продукты с помощью wc_get_products()? Что я делаю не так?

не могли бы вы указать полную функцию, которую вы используете, а не частичный код, чтобы мы могли знать, когда функция запускается, также вы пытались var_dump($products)

kashalo 08.10.2018 19:04

Извините, я объяснил тревожную ситуацию ... Функция работает, но возвращает пустую строку.

Salvatore Riccardi 08.10.2018 19:09

@SalvatoreRiccardi Проблема может заключаться в том, что Woocommerce не был инициализирован.

Kairat Kempirbaev 28.12.2018 19:49
Стоит ли изучать 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 и хотите разрабатывать...
2
3
7 629
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваш код работает и предоставит вам массив из 10 последних созданных объектов WC_Product. Поэтому, когда вы возвращаете этот массив объектов WC_Product, он ничего не дает, поскольку это не строка.

Если вы хотите получить все продукты, вам нужно добавить аргумент 'limit' со значением -1, например:

// An array of all published WC_Product Objects
$products = wc_get_products( array( 'status' => 'publish', 'limit' => -1 ) );

// Displaying the number of products in this array
echo '<p>Number of products: ' . sizeof( $products ) . '</p>';

// Loop through products and display some data using WC_Product methods
foreach ( $products as $product ){
    echo '<p>';
    echo 'Type: '  . $product->get_type() . '<br>';  // Product type
    echo 'ID: '    . $product->get_id() . '<br>';    // Product ID
    echo 'Title: ' . $product->get_title() . '<br>'; // Product title
    echo 'Price: ' . $product->get_price();          // Product price
    echo '</p>';
}

Пример. Следующий код выведет в виде строки набор всех идентификаторов ваших продуктов, разделенных запятыми:

echo '<p>Products IDs list: ' . implode( ', ', wc_get_products( array( 'status' => 'publish', 'limit' => -1, 'return' => 'ids' ) ) ) . '</p>';

Проверено и работает.

Он вернул еще пустую строку с этим синтаксисом, тогда, возможно, проблема с конфигурацией? Является ли это возможным? Есть ли какой-то конкретный режим, где он не работает?

Salvatore Riccardi 09.10.2018 13:29

@SalvatoreRiccardi Этот код ответа просто работает ... Поэтому я не знаю, как и где вы его используете. Ваш вопрос не ясен в связи с контекстом и использованием.

LoicTheAztec 09.10.2018 15:50

Извините, я обнаружил проблему. Это неопределенный URL-адрес переменной, который я инициализировал раньше, а не функция. Спасибо за поддержку.

Salvatore Riccardi 10.10.2018 16:34

Я еще не решил. Вы можете прислать мне zip-файл со своим тестовым кодом или разместить его здесь? Спасибо.

Salvatore Riccardi 12.10.2018 13:54

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

Kairat Kempirbaev 28.12.2018 19:49

Моя проблема заключалась в том, что

   wc_get_products($args);

не инициализирован. Сначала вам нужно проверить этот случай. Возможно, у вашего хука add_action несоответствующий приоритет. Перед вызовом функции убедитесь, что woocommerce инициализирован.

Привет, @Kairat Kempirbaev, как инициализировать woocommerce? Я думаю, что у меня проблема, которую вы описали в своем ответе.

kadddeee 12.02.2019 09:48

@kadddeee developer.wordpress.org/reference/functions/add_action. Я использовал functions.php в дочерней теме.

Kairat Kempirbaev 31.03.2019 03:42

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