计算Foreach循环中的POST总数

时间:2012-07-30 作者:elbatron

我使用了以下脚本(仅适用于get\\u permalink…)要显示帖子作者在其用户页面上有额外元字段的帖子类型中的帖子,请执行以下操作:

<?php // get users from user page
    $blogusers = get_users();
    foreach ($blogusers as $user) {
        if(get_field(\'races\',\'user_\' . $user->ID)) {
        while(the_repeater_field(\'races\',\'user_\' . $user->ID)) {
            $signed_up = get_sub_field(\'race_name\', $post_object->ID);
            if($original_id == $signed_up->ID) { //original ID is the race_name post we are on      
            $user_info = get_userdata($user->ID);

                $arg = array( 
                \'post_type\' => array (\'members\'),
                \'post_status\' => array( \'publish\'),
                \'posts_per_page\' => 200,
                \'author\' => $user_info->ID
                );
                $arg_query = new WP_Query();
                $arg_query->query( $arg );

                echo $total = $arg_query->post_count;

            } else {
            }
        }
    }
} ?>
虽然它可以显示来自成员帖子类型的帖子标题,但我无法计算这些帖子的数量。它显示:1 1 1而不是3,依此类推。如何更改foreach以正常工作?

2 个回复
最合适的回答,由SO网友:elbatron 整理而成

谢谢你的建议。最后,我想出了一个快速的解决方案,似乎能以我需要的格式给出正确的数字。我确信有一种更干净的方法可以从这样的查询中获得结果,但到目前为止,我还没有看到任何类似的方法。

<?php // get users from user page
$blogusers = get_users();
$i = 0;
foreach ($blogusers as $user) {
    if(get_field(\'races\',\'user_\' . $user->ID)) {
    while(the_repeater_field(\'races\',\'user_\' . $user->ID)) {
        $signed_up = get_sub_field(\'race_name\', $post_object->ID);
        if($original_id == $signed_up->ID) { //original ID is the race_name post we are on      

            $arg = array( 
            \'post_type\' => array (\'members\'),
            \'post_status\' => array( \'publish\'),
            \'posts_per_page\' => 200,
            \'author\' => $user_info->ID
            );
            $arg_query = new WP_Query();
            $arg_query->query( $arg );

        $i++;

        } else {
        }
    }
}
} if($i>0) { echo $i; } ?>

SO网友:W van Dam

编辑:重新阅读您的问题,我注意到我可能混淆了一些东西,但重点仍然是,您应该将这些在循环内执行的单独查询结合起来,方法是使用循环内的变量创建查询参数的综合列表,您可以使用这些查询参数在循环外执行一个查询。

很遗憾,我没有时间提供更详细的答案。

原始帖子:你得到1 1 1 因为您正在为每个用户执行单独的查询。

您可以将这些查询组合到一个查询中,然后$arg_query->post_count 将按您的意愿工作。为此,请使用foreach循环获取所有作者ID,并将其存储在一个数组中。然后在foreach循环完成后,使用存储的author参数的author id执行查询。

这个WP_Query codex page 显示了查询多个作者的帖子的基本示例:

$query = new WP_Query( \'author=2,6,17,38\' );
顺便说一句,为什么要使用get_userdata() 如果你只是用它来获取用户ID, 你已经有了吗?

结束

相关推荐

在函数.php中使用ADD_IMAGE_SIZE获取原始上传文件

可以在函数中使用add\\u image\\u size。php获取原始上传文件大小。因为当我上传图片到我的帖子时,我对它们进行了裁剪,以使我的所有图片大小都具有1x1的比例,我记得我使用了“所有图片”选项。所以现在,当我使用完整或大型图像时,我总是以方形图像结束。但我可以看到,原始上传文件的良好比例仍然存在于uploads文件夹中,如果可能的话,我想用某种方式检索它们。我在函数中使用以下代码。php:<?php function my_attachment_all_images($post