2013-05-17 89 views
2

每篇文章都有一個發佈日期和「資源字段」,其中有另一個字段與日期(與發佈日期不同)。有人可以告訴我如何訪問...資源字段日期?我有帖子,我需要按「資源字段」 - >日期desc爲每個類別進行排序。按自定義字段對帖子進行排序

這是查詢,但沒有工作...

<?php $terms = get_terms('resources-categories', array('hide_empty' => false)); ?> 
<?php foreach($terms as $term): ?> 
<ul> 
<?php 
$query = new WP_Query(array(
      'post_type' => 'resources', 
      'resources-categories' => $term->slug, 
      'posts_per_page' => '-1', 
      'meta_key' => 'date', 
      'meta_value' => date('F Y'), 
      'meta_compare' => '>', 
      'orderby' => 'meta_key', 
      'order' => 'DESC', 
      'post_parent' => 0) 
      ); 
if ($query->have_posts()) : $count = 0; 
while($query->have_posts()) : 
$query->the_post(); ?> 
<li> 
//print code... 
</li> 
<?php endwhile; endif; ?> 

回答

2

我傾向於使用$args陣列的meta_query屬性有更好的運氣。這裏是你的榜樣使用這個屬性重組:

$today = date('Y-m-d'); 
$args = array(
    'post_type' => 'resources', 
    'posts_per_page' => '-1', 
    'meta_key' => 'date', 
    'meta_query' => array(
     array(
      'key' => 'date', 
      'value' => $today, 
      'type' => 'date', 
      'compare' => '>' 
     ) 
    ), 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC', 
    'post_parent' => 0 
); 

有兩點要注意:我已經改變了你的日期格式

  • 通知。您的原始格式將使用月份的文字表示形式。 WordPress將無法「比較」該值,因爲它表示爲一個字符串。我假定您的日期正在以yyyy-mm-dd的標準SQL格式存儲。但這可能會成爲你的重大障礙。您只需要確定您可以知道日期的實際格式(因爲它存儲在數據庫中),然後在$today變量中匹配該格式。

  • 請注意,我已包含meta_key值。它看起來多餘,但事實並非如此。這是排序工作所必需的。

  • 最後,您包含名爲'resources-categories' => $term->slug的屬性,但這不會對查詢產生任何影響。 (所以我刪除了它)。如果您需要額外查詢分類標準,則需要查看$args陣列的tax_query屬性。

希望這會有所幫助,玩得開心!

+0

非常感謝你,對我遲到的回覆感到抱歉。我把你的代碼和我做了一些改變,它的工作原理。 – Florin

+0

很好聽!如果您所做的更改可能對其他人有幫助(例如,我的代碼中存在拼寫錯誤),並且我會更新我的答案,請隨時在此處發表評論。如果你願意,你也可以「接受」答案。 –

相關問題