wordpress - WC_Product_Query 不适用于 have_posts()

标签 wordpress loops woocommerce product

我正在尝试像使用自定义帖子类型一样遍历我的 WooCommerce 产品。但由于某种原因,这种方法不起作用。我在使用 have_posts() 时遇到与我有关的错误.我究竟做错了什么?

错误

Uncaught Error: Call to a member function have_posts() on array



我的代码
<?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()

最佳答案

$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类(class)正在扩展 WC_Object_Query类,而不是 WP_Query - 所以这个函数不能被调用

关于wordpress - WC_Product_Query 不适用于 have_posts(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54853854/

相关文章:

mysql - 将用户添加到多站点中的 WordPress 站点

html - 删除 wp_head 中的默认 css 样式标签

php - 如何对 MYSQL 进行多次插入,每次插入都基于子查询中一组值中的每个值?

php - 根据用户角色向 WooCommerce 付款方式分配百分比费用

wordpress - 使用端口 465 使用 smtp (SSL) 发送电子邮件

c - 按下按钮的检测不完整

vb.net - 如何通过单击按钮来打破循环

r - 如何通过汇总 dplyr 函数循环多个数据帧中的数据

wordpress - 在产品页面上显示 Wordpress Woocommerce 类别图标

CSS 问题 : Why is sidebar not clickable?