使用Woocommerce中的wc_get_products查询所有不带API的产品

时间:2018-10-08 16:31:34

标签: php arrays wordpress woocommerce product

在Woocommerce中,我尝试使用wc_get_products()来获取所有产品,如下所示:

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

但是它返回一个空字符串。

如何使用wc_get_products()获得所有产品?我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您的代码有效,它将为您提供10个最后创建的WC_Product对象的数组。因此,当您返回此WC_Product对象数组时,由于它不是字符串,因此不会给出任何结果。

如果您想获得所有产品,则需要添加值为{strong> '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>';
}

示例-以下代码将以逗号分隔的字符串形式输出所有产品ID的套件:

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

经过测试可以正常工作。

答案 1 :(得分:0)

我的问题是

   wc_get_products($args);

未初始化。您需要先检查该情况。 可能是您的add_action挂钩的优先级不合适。 确保woocommerce首先初始化,然后再调用该函数。