按元键值排序get_adjacent_post - Wordpress

时间:2014-02-13 04:40:35

标签: php wordpress filter

我想出了一个解决方案,我想出了一点点。

我正在使用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函数不支持我在原始查询中应用的排序这一事实。我需要通过元键'wpcf-date'对get_adjacent_post函数进行排序。

我相信get_adjacent_posts可以过滤输出我想要的但我不知道怎么做。如果有人能帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分: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);

您需要以前的帖子ID。 $ query是您从Wp_query

生成的字符串

P.S。最后一篇文章应返回0;