Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从WP_查询循环获取产品属性_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 从WP_查询循环获取产品属性

Php 从WP_查询循环获取产品属性,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有一个函数,它使用WP_查询循环遍历产品帖子类型。在这个函数中,我可以从post对象中获取产品帖子的内容,如permalink、标题、图像等。但是,对于循环中的每个产品,我需要访问product对象,因为我想计算和显示评论评级。我使用全局$product,然后使用$product->get_rating_count()等来获取所需的数据。然而,在调试另一段代码时,我发现众所周知的“ID”调用不正确。不应直接访问产品属性。此函数出现错误 一切都仍然有效(调试已关闭),但我想确保它在WooComm

我有一个函数,它使用WP_查询循环遍历产品帖子类型。在这个函数中,我可以从post对象中获取产品帖子的内容,如permalink、标题、图像等。但是,对于循环中的每个产品,我需要访问product对象,因为我想计算和显示评论评级。我使用全局$product,然后使用$product->get_rating_count()等来获取所需的数据。然而,在调试另一段代码时,我发现众所周知的“ID”调用不正确。不应直接访问产品属性。此函数出现错误

一切都仍然有效(调试已关闭),但我想确保它在WooCommerce的未来版本中仍然有效。有人知道我可以在WP_查询循环(即通过产品post类型循环)中访问产品对象属性而不会出现此错误吗

这是我的密码

<?php
// Get the product rating
global $product;
if ( 'no' === get_option( 'woocommerce_enable_review_rating' ) ) {
return;
}
$rating_count = $product->get_rating_count();
$review_count = $product->get_review_count();
$average      = $product->get_average_rating();
if ( $rating_count > 0 ) : ?>
<div class="woocommerce-product-rating">
  <?php echo wc_get_rating_html( $average, $rating_count ); ?>
  <?php if ( comments_open() ) : ?>
  <a href="<?php echo get_permalink( $product->ID ); ?>#reviews" class="woocommerce-review-link" rel="nofollow">(
    <?php printf( _n( '%s customer review', '%s customer reviews', $review_count, 'woocommerce' ), '<span class="count">' . esc_html( $review_count ) . '</span>' ); ?>)
  </a>
  <?php endif ?>
</div>
<?php endif; ?>


任何帮助都将不胜感激!干杯

变量
$product
WC\u product
类的一个实例,它不同于
WP\u Post
类。您可以在此处阅读有关
WC\u产品的
API:

在这种情况下,获取产品ID的正确方法是使用
get\u ID
方法:


$product->get_id()

我想我需要一些睡眠


今天早上再看一遍,我可以看到一些东西,因为某种原因,我以前一直在上釉。我正在调用$product->ID以获取产品的链接,但现在它当然应该是$product->get_ID()。有了这个改变,它现在开始工作了。

所以不用“global$product”,只需使用$product->get_id()?@ChrisHawkins我想你仍然需要
global$product
来使用
$product
变量,但是如果你不想使用它,你也可以使用
$product=wc_get_product($product_id)
。它会给你同样的结果。是的,我也尝试过使用wc_get_product(),但结果是一样的。WooCommerce抱怨我直接访问产品。