2014-02-13 4 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 не выполняет сортировку, которая была применена в моем исходном запросе. Мне нужно отсортировать функцию get_adjacent_post мета-ключом «wpcf-date».

Я считаю, что get_adjacent_posts можно отфильтровать, чтобы выводить то, что я хочу, но я понятия не имею, как это сделать. Если кто-то может помочь мне, это было бы очень признательно!

ответ

0

вы можете использовать

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

отредактирован: -

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; 
} 

использовать это в вашем functions.php и

$previous_post_id=get_previous_post_id($query); 

о том, где вам нужно предыдущий пост идентификатор. $ query - это строка, которую вы создали из Wp_query

p.s. последний пост возвращает 0;

+0

Мне не нужна ссылка на предыдущий пост. Мне просто нужно получить идентификатор предыдущего сообщения. – user1982371

+0

проверить отредактированный раздел – anstrangel0ver

+0

, он был снова отредактирован .. возможно, это будет для вашего Wp_query, который вы уже выполнили. – anstrangel0ver

Смежные вопросы