Wordpress - 按到期日期对帖子进行排序

时间:2010-08-09 18:02:05

标签: wordpress

我试图在非过期帖子后显示过期帖子。我怎么能这样做?

我添加了一个自定义字段“过期日期”,其中我以yyyy / mm / dd格式存储过期日期。问题是,如果我按此字段订购我的结果,将来会有未来的到期日期。

所以我创建了一个重复的cron-job来比较日期,并为已过去日期的帖子创建一个辅助自定义字段“Expiration Date Passed”。我尝试通过此字段进行排序,但WP仅显示具有该字段值的帖子 - 没有过期日期的IE帖子或未来的过期日期,不显示。所以我尝试为任何尚未过期的帖子自动添加值'99999999'。问题是,WP不能按自定义字段值排序那么日期 - IE第一个值为'99999999'的帖子是随机顺序。

我还试过对帖子做两个查询,一个没有过期的帖子,一个有,然后合并这两个数组。因此数据的顺序正确 - 但它搞砸了WP的分页。

帮助,我的想法已经用完了!

2 个答案:

答案 0 :(得分:0)

由于您有一个“过期日期通过”自定义字段,您可以先在get_posts参数中使用该自定义字段创建两组帖子,以区分当前和&过期的帖子

$ meta_key和$ meta_value (字符串)(可选)仅显示包含具有此键和值的元(自定义)字段的帖子。必须定义这两个参数,否则两个参数都不起作用。 默认值:无

摘自: http://codex.wordpress.org/Function_Reference/wp_get_recent_posts

然后你就可以按照你想要的方式对每一组进行排序

答案 1 :(得分:0)

这可能有效,但我正在尝试对我的类别页面上的帖子进行排序。 Wp_get_recent_posts函数通常用于创建自定义循环,而不是修改类别(存档模板)页面中的“循环”。

最后我用它对它进行了分类。我将此代码添加到了我的存档模板的顶部:

global $query_string;
query_posts($query_string . "&orderby=meta_value&meta_key=Expiration Date Passed&order=DESC");  

我创建了一个名为“Expiration Date Passed”的“排序”自定义字段。然后,一个cron作业会查看帖子是否有过期日期。如果没有,或者日期是将来,它会将帖子的发布日期+ 20年放在排序列中。如果帖子的过期已经过去,它会将帖子的发布日期放在排序列中。因此,它产生了我所追求的顺序:

1)按日期顺序未过期的帖子  2)已过期的帖子,按日期顺序

以为我会发布该解决方案以防其他人想知道。