2012-01-13 71 views
0

如何通過自定義字段排序帖子,如果「releasedate」>「currentdate」,但是按照批准順序。基本上只顯示帖子,日期從今天開始,但按升序排列。目前,我有Wordpress自定義字段日期,自定義日期顯示帖子>當前升序

<?php 
$temp = $wp_query; 
$wp_query= null; 
$wp_query = new WP_Query(); 
$wp_query->query('showposts=10&post_type=movies&meta_key=releasedate_value&orderby=releasedate_value&order=ASC'); 
if (have_posts()) : while (have_posts()) : the_post(); 
$currentdate = date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y"))); 
?> 


<?php if ($releasedate > $currentdate) {?> 

「我的內容/後這裏」

<?php } ?> 
<?php endwhile; ?> 
<?php endif; ?> 

現在一切正常,除非它的ASC和不DSC,無後將會獲得這個職位首先顯示,因爲WordPress的和擦除帖子中不是當前日期,只允許發佈10個帖子,因此如果10個帖子在今天之前有發佈日期,那麼wordpress加載會在刪除它們之後將其全部留空!感謝您的幫助

回答

4

我會把日期標準放入查詢本身。假設您的WordPress版本爲3.1或更高版本,則可以使用meta_query參數。例如:

<?php 
$currentdate = date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y"))); 

$wp_query = new WP_Query( array ('showposts' => 10, 
       'post_type' => 'movies', 
       'meta_query'=> array(
        array(
         'key' => 'releasedate_value', 
         'compare' => '>', 
         'value' => $currentdate, 
         'type' => 'DATE', 
        )), 
       'meta_key' => 'releasedate_value', 
       'orderby' => 'meta_value', 
       'order' => 'ASC' 
    ) 
); 

應該工作。

+0

非常感謝你! – Craig 2012-01-26 16:46:05

0

這工作我太:

$currentdate = date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y"))); 

            $args = array(
             'post_type' => 'event', 
             'meta_key' => 'date_field', 
             'posts_per_page' => 5, 
             'orderby' => 'meta_value', 
             'order' => 'ASC', 
             'meta_query' => array(
              array(
               'key' => 'date_field', 
               'value' => $currentdate, 
               'compare' => '>=', 
               'type' => 'DATE' 
              ), 
             ), 
            ); 
            $my_query = null; 
            $my_query = new WP_Query($args); 
相關問題