我正尝试遍历我的WooCommerce产品,就像使用“自定义帖子类型”一样。但是由于某种原因,该方法无法正常工作。我收到与have_posts()
有关的错误。我在做什么错了?
错误
未捕获的错误:在数组上调用成员函数have_posts()
我的代码
<?php
$query = new WC_Product_Query( array(
'limit' => 10,
'orderby' => 'date',
'order' => 'DESC'
) );
$products = $query->get_products();
if( $products->have_posts() ) {
while( $products->have_posts() ) {
$products->the_post();
echo the_permalink();
}
} ?>
更新
我发现使用foreach循环的工作原理如下:
<?php
foreach( $products as $product ) {
echo $product->get_title();
} ?>
但是我仍然想了解为什么此方法不适用于have_posts()
答案 0 :(得分:6)
$query = new WC_Product_Query(array(
'limit' => 10,
'orderby' => 'date',
'order' => 'DESC'
));
$products = $query->get_products();
if (!empty($products)) {
foreach ($products as $product) {
echo get_permalink($product->get_id());
}
}
函数have_post()
是WordPress WP_Query
类的成员函数-WooCommerce WC_Product_Query
类扩展了WC_Object_Query
类,而不是WP_Query
类-因此该函数不能被称为
答案 1 :(得分:1)
因为$ products是数组,所以您不能在其中某些项目上调用方法。如果您执行了$ products [0]-> have_posts(),它将起作用。