2014-02-13 27 views
0

我用一個解決方案打出了一點碰撞。通過元鍵值對get_adjacent_post進行排序 - Wordpress

我使用get_adjacent_posts功能的循環

<div class="timeline"> 
    <?php $args = array('post_type' => 'case', 'cases' => $term->slug, 'order' => 'DEC', 'orderby' => 'meta_value', 'meta_key' => 'wpcf-date'); $query = new WP_Query($args); while ($query->have_posts()) : $query->the_post(); ?> 

     <?php 
      $previous_post = get_adjacent_post(true, '', true, 'cases'); //Get The previous post 
      $prev_year = date("Y", get_post_meta($previous_post->ID, 'wpcf-date', true)); //Get the year of the previous post 
      $entry_year = date("Y", (types_render_field("date", array("raw"=>"true")))); //Get the year of the current post 

      if ($prev_year != $entry_year) { 
     ?> 

     <strong class="entry-year"><?php echo $entry_year; ?></strong> 

     <?php } ?> 

     <div class="timeline-entry"> 
      <span class="entry-date"><?php echo types_render_field("date", array("raw"=>"false")); ?></span> 
      <span class="entry-citation"><?php echo types_render_field("citation-court", array("raw"=>"false")); ?></span> 
      <strong class="entry-title"><?php the_title(); ?></strong> 
      <?php the_content(); ?> 
     </div> 

    <?php endwhile; wp_reset_postdata(); ?> 
    </div> 

基本上我想實現是顯示帖子的「時間線」內恢復以前的職位,並呼應了一年(自定義字段)每個職位同一年只有一個職位。我的解決方案與get_adjacent_post函數不遵守我的原始查詢中應用的排序無關。我需要通過meta key'wpcf-date'對get_adjacent_post函數進行排序。

我相信get_adjacent_posts可以過濾輸出我想要的,但我不知道該怎麼做。如果有人能幫助我,那將不勝感激!

回答

0

可以使用

previous_posts_link('previous',$query->max_num_pages) 

編輯: - 在你的functions.php在需要以前的帖子ID

function get_previous_post_id($wp_query) { 
    if ($wp_query->current_post == $wp_query->post_count) return 0; 
$previous_post = $wp_query->posts[$wp_query->current_post - 1]; 
return $previous_post ->ID; 
} 

使用這種和

$previous_post_id=get_previous_post_id($query); 

。 $查詢是您從Wp_query生成的字符串

p.s.最後的帖子應該返回0;

+0

我不想要一個鏈接到前一篇文章,我只需要獲得以前的帖子的ID。 – user1982371

+0

檢查已編輯的部分 – anstrangel0ver

+0

它已被再次編輯..可能這將爲您已經運行的Wp_query啓動。 – anstrangel0ver

相關問題