按周而不是按天对WordPress帖子的元值进行排序

时间:2015-03-26 作者:mr. x

现在我有一个名为“epicredvote”的元键,它根据这个epicredvote编号对我的帖子进行排序。目前,它每天都在这样做,因此如果我有2篇帖子,epicredvote最高的帖子将位于顶部。我想按周而不是按天分类。我希望我那周的所有帖子都能得到epicredvote的批准。最高#位于顶部。

$querystr = ”
SELECT $wpdb->posts.*, YEAR(post_date) AS year,
MONTH(post_date) AS month,
DAYOFMONTH(post_date) AS dayofmonth
FROM $wpdb->posts, $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->postmeta.meta_key = ‘epicredvote’
AND $wpdb->posts.post_status = ‘publish’
AND $wpdb->posts.post_type = ‘post’
GROUP BY ID
ORDER BY LEFT($wpdb->posts.post_date, 10) DESC, $wpdb->postmeta.meta_value+0 DESC
“;
请帮忙,这将是惊人的。感谢所有的摇滚明星们!

2 个回复
最合适的回答,由SO网友:Amanda Giles 整理而成

我同意Rarst关于WEEK函数的说法,但也要确保使用YEAR来订购帖子。因此,您的订购方式如下所示:

ORDER BY YEAR($wpdb->posts.post_date) DESC, WEEK($wpdb->posts.post_date) DESC, $wpdb->postmeta.meta_value+0 DESC
当然,这仍在拉取所有帖子,因此您可能还希望通过将其添加到WHERE子句,将查询限制为仅拉取当前年份。

AND YEAR($wpdb->posts.post_date) = YEAR(CURDATE())

SO网友:Rarst

这是一个MySQL问题,而不是WordPress问题。

您已经在那里使用了日期函数,通过快速检查,有一个用于WEEK(date[,mode]), 您可以用类似的方式订购。

结束