Мне нужно показать пост из списка архивов по почте. Я создал плагин с этим кодом:the_permalink in loop дает те же результаты
function posts_by_year() {
// array to use for results
$years = array();
// get posts from WP
$posts = get_posts(array(
'numberposts' => -1,
'orderby' => 'post_date',
'order' => 'ASC',
'post_type' => 'post',
'post_status' => 'publish'
));
// loop through posts, populating $years arrays
foreach($posts as $post) {
$years[date('Y', strtotime($post->post_date))][] = $post;
}
// reverse sort by year
krsort($years);
return $years;
}
?>
<?php function wyswietl_archiwum(){ ob_start(); ?>
<?php foreach(posts_by_year() as $year => $posts) : ?>
<h2><?php echo $year; ?></h2>
<ul>
<?php foreach($posts as $post) : setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
<?php
return ob_get_clean();
} ?>
<?php add_shortcode('archiwum', 'wyswietl_archiwum');
Когда я положил шорткод [archiwum]
на любой странице, я получаю список, но каждый один пункт отображает название текущей страницы и ссылки на себя.
Любая идея, как сделать правильный?
Именно так работает 'the_date' [documented] (https://codex.wordpress.org/Function_Reference/the_date). В документации также описывается, как получить нужное поведение в «Специальном примечании». –
Спасибо! Я использовал второй метод, и он работает! –
Спасибо за быстрый ответ на мой второй вопрос. Я обманул себя, чтобы не проверять документацию. Вместо этого я использовал the_time ('d.m'). –