В Woocommerce я пытаюсь получить все продукты, использующие wc_get_products(), следующим образом:
$args = array( 'status' => 'publish' );
$products = wc_get_products( $args );
return $products;
Но он возвращает пустую строку.
Как я могу получить все продукты с помощью wc_get_products()? Что я делаю не так?
Извините, я объяснил тревожную ситуацию ... Функция работает, но возвращает пустую строку.
@SalvatoreRiccardi Проблема может заключаться в том, что Woocommerce не был инициализирован.






Ваш код работает и предоставит вам массив из 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>';
Проверено и работает.
Он вернул еще пустую строку с этим синтаксисом, тогда, возможно, проблема с конфигурацией? Является ли это возможным? Есть ли какой-то конкретный режим, где он не работает?
@SalvatoreRiccardi Этот код ответа просто работает ... Поэтому я не знаю, как и где вы его используете. Ваш вопрос не ясен в связи с контекстом и использованием.
Извините, я обнаружил проблему. Это неопределенный URL-адрес переменной, который я инициализировал раньше, а не функция. Спасибо за поддержку.
Я еще не решил. Вы можете прислать мне zip-файл со своим тестовым кодом или разместить его здесь? Спасибо.
@SalvatoreRiccardi Я знаю, что уже поздно. Я все еще хочу записать это, чтобы никто другой не потратил время на выяснение этого.
Моя проблема заключалась в том, что
wc_get_products($args);
не инициализирован. Сначала вам нужно проверить этот случай. Возможно, у вашего хука add_action несоответствующий приоритет. Перед вызовом функции убедитесь, что woocommerce инициализирован.
Привет, @Kairat Kempirbaev, как инициализировать woocommerce? Я думаю, что у меня проблема, которую вы описали в своем ответе.
@kadddeee developer.wordpress.org/reference/functions/add_action. Я использовал functions.php в дочерней теме.
не могли бы вы указать полную функцию, которую вы используете, а не частичный код, чтобы мы могли знать, когда функция запускается, также вы пытались
var_dump($products)