2015-04-07 3 views
0

У меня возникают проблемы с получением информации о продукте через функции объекта в Woocommerce.Woocommerce получить все продукты в массиве

Это, как я:

public function table_data() 
{ 
    $args  = array('post_type' => 'product', 'posts_per_page' => -1); 
    $products = get_posts($args); 

    $pfactory = new WC_Product_Factory(); 
    foreach($products as $product) 
    { 
     $_product = $pfactory->get_product($product); 
    } 
} 

Это возвращает информацию о товарах из wp_posts только, он не даст мне информацию, хранящуюся в wp_postmeta.

Мне нужна полная информация из всех продуктов (например, цена, ски, запас и т. Д.) В одном массиве, но мне, кажется, что-то не хватает, и я не уверен, имеет ли он иерархию функций в моем коде. Однако я думал, что это возможно обойтись без SQL-запросов.

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

Спасибо за помощь, которую я могу получить.

ответ

4

Вместо этого используйте WP_Query, который даст вам доступ к глобальной переменной продукта WooCommerce $ из цикла. Оттуда вы можете захватить цену, ску, запас и все другие данные. http://docs.woothemes.com/wc-apidocs/class-WC_Product.html

<?php 
    $args = array(
     'post_type' => 'product', 
     'posts_per_page' => -1 
    ); 
    $loop = new WP_Query($args); 
    if ($loop->have_posts()): while ($loop->have_posts()): $loop->the_post(); 

     global $product; 

     $price = $product->get_price_html(); 
     $sku = $product->get_sku(); 
     $stock = $product->get_stock_quantity(); 

    endwhile; endif; wp_reset_postdata(); 
?> 
+0

Извините, но я не могу заставить его работать. – imcalmed

+0

Что не работает? Что вы пытаетесь? Этот код еще не выводит ничего, а дает вам переменные, необходимые для вывода данных. – johnnyd23

+0

Im делает простой тест с вашим примером кода, где я пытаюсь var_dump некоторые параметры. Но я не понимаю, почему вы используете $ product-> в своем примере? – imcalmed

0

Первое, что я придумал, было это.

function products() { 
     return array_map('wc_get_product', get_posts(['post_type'=>'product','nopaging'=>true])); 
} 

Я хотел бы знать, от кого-то более опытного с WooCommerce, если есть лучший способ

Смежные вопросы