wordpress档案列表每年分开的帖子

时间:2014-10-31 10:51:52

标签: php wordpress archive

我有一个时间线帖子页面。 我想通过发布年份将其分开。 例如:

2014
post 1
post 2
post 3

2013
post 1
post 2
post 3

现在发布循环没问题。但是我希望在每年的第一行后循环中添加年份。 我正在使用下面的代码。我该如何添加年份?

<?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;?>
<?php $media = new WP_Query(array(
                        'post_type' => 'post',
                        'category_name' => 'media',
                        'posts_per_page' => 50,
                        'paged' => $paged
                )); 
?>


<?php if( $media->have_posts()) : while($media->have_posts()) : $media->the_post(); ?>
<span class="app_tl_time">2014</span>
<article class="app_tl_article">
    <span class="app_tl_arrow"></span>
                <div class="app_tl_title">
            <a href="<?php echo get_permalink(); ?>">
                 <?php the_title(); ?>
            </a>
        </div>
</article>

<?php endwhile; ?>
<?php if ($media->max_num_pages > 1) { ?>
    <nav class="prev-next-posts">
        <div class="prev-posts-link">
            <?php // display older posts link
                  echo get_next_posts_link( 'Prev', $media->max_num_pages );  
            ?>
        </div>
        <div class="next-posts-link">
           <?php echo get_previous_posts_link( 'Next' ); // display newer posts link ?>
        </div>
    </nav>
<?php } ?>
<?php else: ?>
<article>
    <p><?php _e('Nothing.'); ?></p>
</article>
<?php endif; ?>
</div><!--app_timeline_grid-->

4 个答案:

答案 0 :(得分:0)

WordPress有一个内置函数,名为wp_get_archives()。在你的情况下:

<?php wp_get_archives( array('type' => 'yearly') ); ?>

详细了解按年in the codex创建档案。

答案 1 :(得分:0)

只需查看页面Template_Hierarchy即可创建副本存档重命名为2014.php或date.php

enter image description here

OR wp get archives

答案 2 :(得分:0)

行。谢谢大家。

我找到了解决方案链接:http://alex.leonard.ie/2009/08/27/wordpress-grouping-posts-by-monthyear/

效果很好。

<?php
                     // Assign the year to a variable
                     $year = get_the_date('Y', '', '', FALSE);

                     // If your year hasn't been echoed earlier in the loop, echo it now
                     if ($year !== $year_check) {
                     echo "<span class='app_tl_time'>" . $year . "</span>";
                     }

                     // Now that your year has been printed, assign it to the $year_check variable
                     $year_check = $year;
                    ?>

答案 3 :(得分:0)

试试这段代码,你可以得到结果

DispatchQueue.main.async