如何通过自定义字段日期订购wordpress帖子?

问题描述:

我正在做一个事件边栏部分,将只显示接下来的3个事件。我有自定义帖子类型和自定义字段都可以工作,但我似乎想出如何按事件的开始日期排序,这是一个自定义字段值。有没有一个PHP函数可以比较日期并将其组织成一定的顺序。我认为它也将不得不保留带有新安排日期的后ID,以便当我读取这些值时,我可以在该日期显示适当的帖子。如何通过自定义字段日期订购wordpress帖子?

有没有人有一定的方向来引导我?

我觉得这是我需要做的:

  1. 通读职位和抢日期
  2. 排序,通过排序阅读
  3. 与这些日期相关的-ID后的日期日期和重新显示帖子后的第3个职位

我迷失在如何编码,虽然...这是我迄今为止。这段代码只是在wordpress中显示他们的发布日期。

<?php query_posts('post_type=events'); 
      if (have_posts()) : while (have_posts()) : the_post(); ?> 
       <?php $dateStart = get_post_meta($post->ID, 'date-start', true);?> 
       <div class="date"><?php echo $dateStart; ?></div> 

<?php endwhile; endif; wp_reset_query(); ?> 
+0

我想我会把$ dateStart变成一个数组并存储日期的方式?我想,我应该也可以用这些日期来获取后期ID。 –

我相信我能回答我自己的问题。 WordPress的内置功能可以比较帖子之间的自定义字段值。为了比较日期,这是我的自定义字段值,他们必须以'yyyymmdd'格式轻松地进行比较。

我真的很惊讶,我没有做多个循环,并存储post-id或任何东西。无论如何,我希望这可以帮助别人。 :]

<?php 
     $args = array(
      'post_type' => 'events', 
      'posts_per_page' => 3, //limited myself to 3 posts 
      'meta_key' => 'date-start', //name of custom field 
      'orderby' => 'meta_value_num', 
      'order' => 'ASC' 
     ); 
     query_posts($args); 
     if (have_posts()) : while (have_posts()) : the_post(); ?> 
      //Insert code here... 
      //Test to see if it is sorting the posts (below) 
      <?php $dateStart = get_post_meta($post->ID, 'date-start', true); echo $dateStart;?> 

<?php endwhile; endif; wp_reset_query(); ?> 
+0

让我知道是否有人需要帮助理解这一点:] –

+0

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters –

+1

现在可以直接使用''orderby'=>'date-start''。 – sphakka