我使用了以下脚本(仅适用于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以正常工作?
最合适的回答,由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
, 你已经有了吗?