我已成功地在WordPress博客上管理多位作者,感谢StackOverflow上的to this question。我意识到我希望有一个更简单的控制。在上一个问题上,我想在不同的时间间隔内管理作者,但我现在想要的只是他们的月度生产。
我想有一个“简单”的SQL查询来获取每个人的每月作者和帖子列表,
Author No. of posts
====== ============
Paul 23
Ringo 14
John 11
George 31
而不是通过WP管理面板并按月和作者过滤,这将是快速和清晰的,可能使用(谢谢,ypercube)WordPress Database Description上显示的信息。我看到的问题之一是如何只询问某个月份和年份。实际上,这将是查询中的重要变量......
这难吗?
答案 0 :(得分:4)
这个怎么样:
SELECT COUNT( p.id ) post_count, user_nicename, DATE_FORMAT( post_date, '%Y-%m' ) post_month
FROM `wp_posts` p, `wp_users` u
WHERE post_status = 'publish'
AND post_type = 'post'
AND u.ID = post_author
GROUP BY post_author, post_month
编辑:所以将它全部与月份和年份分开并分组并将日期范围放在WHERE子句中:
SELECT COUNT( p.id ) post_count, user_nicename, DATE_FORMAT( post_date, '%Y' ) post_year, DATE_FORMAT( post_date, '%m' ) post_month
FROM `wp_posts` p, `wp_users` u
WHERE post_status = 'publish'
AND post_type = 'post'
AND u.ID = post_author
AND p.post_date >= '2011-11-01'
AND p.post_date < '2011-12-01' + INTERVAL 1 MONTH
GROUP BY post_author, post_year, post_month
ORDER BY post_year, post_month
答案 1 :(得分:1)
仅一个月(比如2011年12月):
SELECT
u.user_nicename AS Author
, COUNT(*) AS Number_Of_Posts
FROM
wp_posts AS p
JOIN
wp_users AS u
ON u.ID = p.post_author
WHERE p.post_type = 'post'
AND p.post_status = 'publish'
AND p.post_date >= '2011-12-01'
AND p.post_date < '2011-12-01' + INTERVAL 1 MONTH
GROUP BY
u.ID
查询可以使用(post_type, post_status, post_date)
的索引来选择要分组的行。