SQL:按其最新帖子(CPT)日期排序的Wordpress用户

时间:2016-06-07 23:59:14

标签: mysql sql wordpress plugins custom-post-type

需要获得以特定自定义帖子类型(CTP)发布的最后5位用户。由于我似乎无法找到WordPress函数来执行此操作,因此我尝试编写自定义查询。

到目前为止,我已经得到了这个以获得最后五个和他们的帖子数量(仅适用于my_custom_type)但它还没有工作。
这是我的疑问:

SELECT *, count(ID) 
FROM wp_posts 
WHERE post_type = 'my_custom_type' 
GROUP BY post_author 
ORDER BY post_author DESC LIMIT 5

我想跳过管理员( post_author = 1 )。

我怎样才能做到这一点?

感谢。

1 个答案:

答案 0 :(得分:1)

您需要ID以外的post_datepost_author排除管理员post_author>1以外的订单:

SELECT *
FROM `wp_posts` 
WHERE `post_author` != 1 
AND `post_status` = 'publish'
AND `post_type` = 'my_custom_type' 
GROUP BY `post_author` 
ORDER BY `ID` DESC, `post_author` ASC LIMIT 5

<强>更新

您现在将获得最近5位作者列表,这些作者按升序日期(ASC'ID')排序,其中包含“已发布”帖子(自定义帖子类型='my_custom_type'),不包括管理员(用户ID = 1)。最后是每个作者的总帖数。

以下是查询:

select t1.*, t2.author_count
from `wp_posts` t1
inner join (
    select max(`ID`) as `ID`, `post_author`, count(1) as author_count
    from `wp_posts`
    where `post_author` != '1'
    and `post_status` = 'publish'
    and `post_type` = 'my_custom_type'
    group by `post_author`
) t2 on t1.`ID` = t2.`ID` and t1.`post_author` = t2.`post_author` 
order by t1.`ID` desc limit 5

author_count是生成的列,总计'published'个帖子,每个选定作者都有一个'post_type' = 'my_custom_type'

基于this answer