Woocommerce获得阵列中的所有产品

时间:2015-04-07 14:08:10

标签: wordpress 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中的信息。

我需要一个数组中所有产品(例如价格,sku,股票等)的完整信息,但我似乎遗漏了一些东西,我不确定它是否与我的代码中的函数层次结构有关。但是我认为没有SQL查询就可以做到这一点。

基本上,我想要做的是在管理员中完整复制产品列表,以便在面板中列出包含信息的产品。

感谢我能得到的所有帮助。

2 个答案:

答案 0 :(得分:7)

使用WP_Query,这将使您可以从循环内访问全局WooCommerce $ product变量。从那里,您可以获取价格,sku,股票和所有其他类型的数据。 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();
?>

答案 1 :(得分:1)

我想出的第一件事就是这个。

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

如果有更好的方法,我很想从更有经验的WooCommerce中了解