我有一个自定义帖子类型(产品),其中包括一个自定义数字字段(评级)。在类别(制造商)页面上,我想对这些评级进行平均,以便为制造商提供综合评级。
所以我正在尝试构建一个返回单个值的函数:
- 检索在使用此类别分类的自定义帖子中找到的所有非空评级字段的平均值
- 独立于循环运行(我需要在循环之前显示,有时帖子比循环使用的要多)
任何想法如何解决这个问题?
您创建将应用于制造商页面的自定义模板。在主循环之外,您将使用 WP_Query 创建一个辅助循环。然后,您遍历您的自定义帖子类型并累积它们存在的评级。设置一个计数器来计算平均值。然后wp_reset_query()
在必要时使用重置循环。
我没有测试下面的代码(显然,我不会去设置所有这些),但它应该给你足够的想法,你可以调整/调试它以获得所需的结果;
在此示例中,我在您的自定义帖子类型 4 中创建了一个虚构的类别 ID,您可以将其更改为您的任何设置;
<?php
$counter = 0;
$cumulative_value = 0;
$avg_query = new WP_Query(array('post_type' => 'product', 'posts_per_page' => '-1', 'cat' => '4' ));
if ( $avg_query->have_posts() ) :
while ($avg_query->have_posts()) : $avg_query->the_post();
if ( $rating_value = get_post_meta($post->ID, 'rating', true) ) :
$cumulative_value += $rating_value;
$counter++;
endif;
endwhile;
endif;
$avg_value = $cumulative_value/$counter;
wp_reset_query(); ?>