【问题标题】:Wordpress - Sorting posts by expiry dateWordpress - 按到期日期对帖子进行排序
【发布时间】:2010-08-09 18:02:04
【问题描述】:

我试图在未过期的帖子之后显示过期的帖子。我该怎么做?

我添加了一个自定义字段“到期日期”,我在其中以 yyyy/mm/dd 格式存储到期日期。问题是,如果我按此字段排序我的结果,未来的到期日期是第一位的。

所以我创建了一个重复的 cron 作业,它比较日期并为日期已过的帖子创建一个辅助自定义字段“过期日期已过”。我尝试按此字段排序,但 WP 仅显示具有此字段值的帖子 - 没有到期日期或未来到期日期的 IE 帖子不显示。所以我尝试为任何尚未过期的帖子自动添加值“99999999”。问题是,WP 无法按自定义字段值排序 THEN date- 即第一个值为“99999999”的帖子是随机顺序的。

我还尝试对帖子进行两次查询,一次没有过期的帖子,一次有,然后合并这两个数组。所以数据的顺序是正确的——但它搞砸了 WP 的分页。

帮助,我的想法快用完了!

【问题讨论】:

    标签: wordpress


    【解决方案1】:

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

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

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

    然后你就可以按照你想要的方式对每个集合进行排序

    【讨论】:

      【解决方案2】:

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

      最后我用这个排序。我将此代码添加到存档模板的顶部:

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

      我创建了一个名为“过期日期”的“排序”自定义字段。然后,一个 cron 作业会查看帖子是否有过期日期。如果不是,或者日期在未来,它会将帖子的发布日期 + 20 年放在排序列中。如果帖子的过期时间已过,它会将帖子的发布日期放在排序列中。因此,它导致了我之后的顺序:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        • 2018-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        相关资源
        最近更新 更多