Запросите все продукты без API, используя wc_get_products в Woocommerce - PullRequest
0 голосов
/ 08 октября 2018

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

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

   wc_get_products($args);

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

0 голосов
/ 09 октября 2018

Ваш код работает и даст вам массив из 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>';

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

...