Архив WordPress Список постов, отделенных ежегодно

У меня есть страница поста временной шкалы.
Я хочу отделить это от года публикации.
Например:

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

0

Решение

WordPress имеет встроенную функцию для этого называется wp_get_archives (). В твоем случае:

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

Узнайте больше о создании архивов по годам в кодексе.

0

Другие решения

Просто посмотрите страницу Template_Hierarchy для создания копии архива переименования в 2014.php или date.php

введите описание изображения здесь

ИЛИ ЖЕ
WP получить архивы

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;
?>
0

Попробуйте этот код, вы можете получить результат

$years = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY year DESC" );

foreach ( $years as $year ) {
// get posts for each year
$posts_this_year = $wpdb->get_results( "SELECT * FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND YEAR(post_date) = '" . $year->year . "'" );

echo '<h2>' . $year->year . '</h2><ul>';

foreach ( $posts_this_year as $post ) {

echo '<li>' . $post->post_title . '</li>';
}
echo '</ul>';
}
0