除当前登录用户外的COUNT_MAND_USERS_POSTS?

时间:2015-09-04 作者:Justice Is Cheap

是否有办法计数和显示自定义帖子类型中除当前登录用户之外的所有作者帖子的计数?

我希望有办法count_many_users_posts 但似乎没有办法排除作者,只包括他们。

我做了多次搜索,但都没有找到任何线索,甚至没有找到正确的方向。

以下是codex的示例:

<?php
    $users = array(1, 3, 9, 10);
    $counts = count_many_users_posts($users);
    echo \'Posts made by user 3: \' . $counts[3];
?>
TIA!

编辑时:

我只是想让你们知道我还没有重温这一点。我会尝试解决方案,等我到了那里再回来。此时又出现了另一个项目。

谢谢

4 个回复
最合适的回答,由SO网友:Justice Is Cheap 整理而成

我不知道为什么会这样,但确实如此。

        $authorid = get_current_user_id();
        query_posts(array( 
            \'post_type\' => \'tasks\',
            \'author\' => -$authorid,
        ) ); 
            $count = 0;
            while (have_posts()) : the_post(); 
                $count++; 
            endwhile;
            echo \'<p class="else"><em>\' .$count .\'</em></p><span class="description">All other posts</span>\';
        wp_reset_query();

SO网友:Rarst

包含和排除通常是可逆的。“非此”(独占)等于“全部,跳过此”(包含)。

如果通常该函数正好满足您的需要,那么您可以创建一个完整的用户ID列表并抛出当前ID。

SO网友:birgire

如果站点上的用户数量相对较少,您可以尝试:

$user_ids = get_users( 
    [ 
        \'fields\'    => \'ID\',                     // Only return the user IDs
        \'exclude\'   => (array) get_current_user_id(),    // Exclude the current user
        \'number\'    => 10                        // Modify this number to your needs
    ] 
);
然后将其作为输入count_many_users_posts() 功能:

$counts = count_many_users_posts( 
    (array) $user_ids,
    $post_type   = \'post\', 
    $public_only = false 
);
您可以根据需要调整帖子类型。

SO网友:Dustin Woods

您可以使用许多WordPress查询功能,但我建议保持查询精简,避免使用WP\\U查询,因为您不需要帖子内容。以下是一个小函数,它将返回不属于user\\u id的post\\u类型的帖子数:

function get_post_count_exclude_user($post_type,$user_id) {
    $query = "SELECT COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s AND post_author <> %s";
    return $wpdb->get_var( $wpdb->prepare( $query, $post_type, $user_id ) );
}

$number_of_posts = get_post_count_exclude_user(\'my_post_type\',get_current_user_id());

相关推荐

GET_POSTS查询大约需要40秒来执行

我在get\\u帖子中有一个元查询,它需要花很长时间才能完成。它工作得很好,但只是时间太长了。我有一个名为event. 在每个event 发布后,有自定义元数据:post\\U sort\\U日期(事件日期YmdHis 格式,用于排序)我需要做的是获取下一个事件,该事件相对于$year 和$month 变量。所以如果$year = 2021 和$month = 10 (2021 10月)然后应该在2021 11月或之后找到第一个事件。我下面的查询很好,但很慢。执行大约需要40秒,我不知道为什么。$next