我想你必须有办法做到这一点。你选择哪一个取决于你的网站上有多少产品和多少类别。
如果你有大量的产品,但没有那么多的类别,那么最好的方法可能是先获得类别:
$product_categories = get_terms( [\'taxonomy\' => \'product_cat\', \'hide_empty\' => false] );
然后通过对每个类别的新查询对其进行迭代,以获取每个类别的最新产品。
另一方面,如果您有许多类别,这将导致执行许多查询。
在这种情况下,您可以考虑按现有方式获取所有产品,对它们进行迭代,并针对每个帖子:
获取所有类别ID:$product->get_category_ids()
构建一个多维数组,其中类别ID作为第一组密钥,产品时间戳作为第二组密钥它将是这样的:
[
5 => [
\'123456789\' => $product1
\'123456877\' => $product2
...
],
10 => [
\'123456888\' => $product3
...
]
]
然后可以按第二组键对数组进行排序,并获得每个嵌套数组的前5个元素。
<小时/>NOTE: 在任何情况下,无论您选择什么,如果您有大量的产品和/或类别,这都不是一个快速操作,因此我建议您使用WP Transients 要存储检索到的ID,并将其保存到添加新产品之前,请删除现有产品或更改现有产品的类别(并且可能在固定时间后失效,只是为了确保这一点)。