我有以下代码:
$args = array(
'limit' => -1, // Attempt to fetch all products
'return' => 'ids' // Fetch only IDs to optimize performance; remove this to get full product objects
);
$product_ids = wc_get_products($args);
echo "<pre>";
print_r($product_ids);
echo "</pre>";
这给出了以下输出:
Array
(
[0] => 496
[1] => 106
[2] => 103
[3] => 58
)
但是,我在 WooCommerce 中有 9 个产品。
以下代码
function dispProduct($id)
{
$productArray = array(
'product_id' => wc_get_product($id)->get_id(),
'name' => wc_get_product($id)->get_name(),
'sku' => wc_get_product($id)->get_sku(),
'price' => wc_get_product($id)->get_price(),
'stock_status' => wc_get_product($id)->get_stock_status(),
'total_sales' => wc_get_product($id)->get_total_sales(),
'regular_price' => wc_get_product($id)->get_regular_price(),
'sale_price' => wc_get_product($id)->get_sale_price(),
// Add more attributes as needed
);
return $productArray;
}
echo "<pre>";
print_r(dispProduct(620));
echo "</pre>";
退货
Array
(
[product_id] => 620
[name] => Wordfence Premium
[sku] =>
[price] => 1116
[stock_status] => instock
[total_sales] => 0
[regular_price] => 1116
[sale_price] =>
)
也就是说,可以找到产品620。
如果我转到 WooCommerce 中的产品,单击产品 620 下的“快速编辑”,然后单击“更新”按钮 - 不更改任何内容,然后返回第一个代码
Array
(
[0] => 620
[1] => 496
[2] => 106
[3] => 103
[4] => 58
)
但是除了价格、名称、sku 等明显差异之外,我看不出 620 和 496 之间有任何显着差异(在使用快速编辑更新产品之前或之后)。
我怎样才能从 WooCommerce 获得所有产品?
如果您在尝试使用 wc_get_products() 获取所有产品时只获得 4 个产品,而不是预期的 10 个产品,这可能是由于 WooCommerce 中的默认产品可见性设置所致。
默认情况下,WooCommerce 仅在查询结果中包含已发布的产品。
为了确保所有产品,无论其发布状态如何,都包含在查询结果中,您可以使用 status 参数并将其设置为“any”。以下是修改 $args 数组的方法:
$args = array(
'limit' => -1, // Attempt to fetch all products
'return' => 'ids', // Fetch only IDs to optimize performance
'status' => 'any', // Include products with any status ()
);
$product_ids = wc_get_products($args);
echo "<pre>";
print_r($product_ids);
echo "</pre>";