2013-06-03 167 views
4

我正在做一個事件邊欄部分,將只顯示接下來的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。 –

回答

3

我相信我能回答我自己的問題。 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

相關問題