You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取WordPress中自定义文章类型投稿量最多的作者信息

获取WordPress中拥有最多自定义文章类型投稿的作者信息

嘿,我来帮你搞定这个需求——要找出WordPress里投稿自定义文章类型最多的作者,咱们可以从WP_User_Query优化和直接SQL查询两个方向入手,具体来看:

方法一:优化WP_User_Query实现

你原来的代码其实有个小问题:默认的post_count统计的是所有文章类型(包括WordPress自带的post、page这些),如果只想统计特定的自定义文章类型,咱们得借助钩子修改查询逻辑,直接关联文章表过滤类型。这里给你调整后的代码:

// 先定义你要统计的自定义文章类型,比如'product'、'portfolio',支持多个
$target_post_types = array('product');

// 初始化用户查询
$author_query = new WP_User_Query(array(
    'order' => 'DESC',
));

// 添加钩子修改查询,关联文章表并过滤自定义类型
add_action('pre_user_query', function($query) use ($target_post_types) {
    global $wpdb;
    
    // 关联wp_posts表,关联用户ID和文章作者ID
    $query->query_from .= " LEFT JOIN {$wpdb->posts} ON {$wpdb->users}.ID = {$wpdb->posts}.post_author ";
    
    // 过滤指定的自定义文章类型,同时只统计已发布的文章(可根据需求去掉)
    $type_list = "'" . implode("','", $target_post_types) . "'";
    $query->query_where .= " AND {$wpdb->posts}.post_type IN ({$type_list}) AND {$wpdb->posts}.post_status = 'publish' ";
    
    // 按自定义文章投稿数降序排序
    $query->query_orderby = " ORDER BY COUNT({$wpdb->posts}.ID) DESC ";
    
    // 按用户ID分组,避免同一作者被重复统计
    $query->query_groupby = " GROUP BY {$wpdb->users}.ID ";
});

// 获取查询结果
$authors = $author_query->get_results();

// 遍历输出作者信息,顺带输出投稿数
foreach ($authors as $author) {
    // 计算该作者的自定义文章投稿数
    $custom_post_count = count_user_posts($author->ID, $target_post_types);
    echo "作者ID:{$author->ID} | 名称:{$author->display_name} | 自定义文章投稿数:{$custom_post_count}<br>";
}

这段代码的核心是用pre_user_query钩子改写了用户查询的SQL结构,精准过滤了你需要统计的自定义文章类型,还加入了发布状态的过滤(如果不需要统计草稿或待审文章,可以保留这个条件)。

方法二:直接使用SQL查询

如果你觉得钩子方法有点绕,直接写SQL查询会更直观,而且执行效率也不错:

SELECT 
    u.ID, 
    u.display_name, 
    COUNT(p.ID) AS custom_post_count
FROM 
    wp_users u
LEFT JOIN 
    wp_posts p ON u.ID = p.post_author
WHERE 
    p.post_type IN ('product') -- 替换成你的自定义文章类型,支持多个比如('product','portfolio')
    AND p.post_status = 'publish' -- 可选,只统计已发布内容
GROUP BY 
    u.ID, u.display_name
ORDER BY 
    custom_post_count DESC
-- LIMIT 5; -- 可选,比如只取投稿数前5的作者

注意:记得把wp_替换成你自己的WordPress数据库表前缀。如果要统计所有自定义文章类型(排除默认的post、page、attachment),可以把WHERE条件改成:

WHERE 
    p.post_type NOT IN ('post', 'page', 'attachment')
    AND p.post_status = 'publish'

这样就能自动统计所有你创建的自定义文章类型了。

内容的提问来源于stack exchange,提问作者Jomol MJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:05:42