Wordpress:计算一个类别中所有帖子的自定义字段值?

时间:2013-02-14 15:45:15

标签: mysql wordpress

我有自定义帖子类型(产品),其中包含自定义数字字段(评级)。在类别(制造商)页面上,我想平均这些评级,以给出制造商的总评级。

所以我正在尝试构建一个返回单个值的函数:

  • 检索在使用此类别分类的自定义帖子中找到的所有非空评分字段的平均值
  • 独立于循环运行(我需要在循环之前显示,有时会有比循环使用的更多的帖子)

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以创建要应用于“制造商”页面的自定义模板。在主循环中,您将使用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(); ?>