如何按自定义日期对WordPress查询进行排序?

时间:2012-07-31 18:25:32

标签: php wordpress sorting

所以我有一个名为“Events”的自定义帖子类型。在每个事件中,我有一个名为“start_time_date”的自定义字段,它返回类似“08/01/12”的日期。我如何对这些帖子进行排序以返回帖子,以便帖子按start_time_date按升序排序(首先显示更接近当前日期的start_time_dates)。

这是我目前的代码:

<? query_posts("cat=$currentID&showposts=100"); ?>
<? if ( have_posts() ) : ?>
    <? while ( have_posts() ) : the_post(); if (time() < strtotime(get('end_time_date'))) :?>

       <? $originalDate = get('start_time_date'); $newDate = date("M j, Y", strtotime($originalDate)); ?>
       <div class="post">Some Post Data</div>

    <? endif; endwhile; ?>
<? endif; ?>

2 个答案:

答案 0 :(得分:1)

您尝试过类似的事情吗?

<? query_posts("cat=$currentID&showposts=100&orderby=date&order=asc"); ?>

我不确定数据库列中究竟是date到底是什么,但它是这样的。此外,订单可能需要改变,但我不认为这很重要。

修改

我做了更多研究,&orderby=date&order=asc对于日期和订购是正确的。

很抱歉,您是否阅读了WordPress codex中的Displaying Posts Using a Custom Select Query

他们还添加了query_posts('&meta_key=popularity&orderby=meta_value');,其中meta_key是自定义字段的名称。

在此处找到:Class Reference/WP Query

答案 1 :(得分:1)

使用以mysql格式存储日期的元字段,即该帖子的2012-08-02。也许可以考虑使用jquery日期选择器为你呈现这种格式。

保存后的这篇文章现在应该在wp_postmeta表中有一行。

$results = new WP_Query( array( 'meta_key' => 'date', 'orderby'=> 'meta_value' ));