在WooCommerce中使用WP_Query时如何获取WC_Product对象

时间:2019-05-14 作者:MMT


我正在尝试使用WP_Query.我使用了如下查询:

$slider_products_q = new WP_Query([
     \'posts_per_page\'    => 8,
      \'post__in\'          => $slides_product_ids,
      \'post_type\'         => \'product\',
      \'orderby\'           => \'date\',
      \'order\'             => \'DESC\'
]);
但是,当我想访问循环中的WooCommerce方法时,它工作得非常好,例如get_html_price 这变得有点棘手

我已经用这种方式处理了它,但是性能不好,查询需要大约“0.7”秒才能加载。

这是我循环浏览每个项目的方式:

if ($slider_products_q->have_posts()):
   while($slider_products_q->have_posts()):
       $slider_products_q->the_post();         
       $product_id = get_the_ID();
       global $product;
       ...
然后我可以打电话$product->get_price_html(); 方法

我也尝试使用Woocommerce方法查询产品,但由于它们加载了许多自定义属性,因此查询需要花费更多的时间

有什么改进的建议吗?

顺便说一下,我只关心使用Woocommerce方法,例如get_price_html.
根本不需要属性或自定义术语。

1 个回复
SO网友:LoicTheAztec

这个global $product; 在自定义中不起作用WP_Query, 而是使用wc_get_product() 例如:

if ($slider_products_q->have_posts()):
   while($slider_products_q->have_posts()):
       $slider_products_q->the_post();         
       $product_id = get_the_ID();
       $product = wc_get_product($product_id);

       $price_html = $product->get_price_html()
       // ...
现在您可以使用任何WC_Product 上的方法$product 变量

或者,您可以使用WC_Product_query.

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post