Mysql Wordpress:计算类别内所有帖子的自定义字段值?

Mysql Wordpress:计算类别内所有帖子的自定义字段值?,mysql,wordpress,Mysql,Wordpress,我有一个自定义帖子类型(产品),其中包括一个自定义数字字段(评级)。在类别(制造商)页面上,我想对这些评级进行平均,以给出制造商的总评级 因此,我尝试构建一个返回单个值的函数: 检索在此类别中分类的自定义帖子中找到的所有非空评级字段的平均值 独立于循环运行(我需要在循环之前显示,有时有比循环使用的帖子更多的帖子) 有没有办法解决这个问题?您可以创建自定义模板,并将其应用到您的制造商页面。在主循环之外,您将使用WP_查询创建一个辅助循环。然后,您可以运行自定义的帖子类型,并在它们存在的地方累积

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

因此,我尝试构建一个返回单个值的函数:

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

有没有办法解决这个问题?

您可以创建自定义模板,并将其应用到您的制造商页面。在主循环之外,您将使用WP_查询创建一个辅助循环。然后,您可以运行自定义的帖子类型,并在它们存在的地方累积评分。设置一个计数器来计算平均值。然后使用
wp\u reset\u 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(); ?>


为我们提供具有所需结果的样本记录
:D
自定义帖子类型为产品(产品a、产品b…),自定义字段为评级(57、58、99…)。类别(制造商a、制造商b等)。问题是我如何在循环外查询和平均评级字段?超级棒-经过两次小的修改后工作得非常出色:*出于某种原因,我使用“=“--我将其更改为足部士兵”$cumulative_value=$cumulative_value+$rating_value;”得到了无理数字而且它工作得很漂亮*类别id替换为$cat-它是针对个人id的,我在哪里可以给100分??)哈哈,太棒了。无理数一定是我给一个数字加了一个字符串,所以它一定是连在一起的。应使用(int)将其转换为数字。我已经更新了帖子。哈哈-我找过了,但至少结果看起来不是串联的,或者是最大化了。。。顺便说一句,我试过了,但是没有按照你改变的方式工作;括号和int没有定义哦!犯了多大的错误啊+=@皮特-
echo$avg_值