Своя тема WordPress: постраничная навигация
Ссылки в статье на другие страницы сайта очень полезны, как для улучшения поведенческих факторов, так и для SEO. Во-первых «подбивают» посетителей посмотреть еще одну публикацию, во-вторых сообщают поисковым роботам о других записях.
В стандартных темах WordPress в конце записей присутствует блок со ссылками на следующую и предыдущую публикацию. Это самый простой вариант вывода ссылок на другие страницы сайта. Выглядит он примерно так:
Чтобы реализовать публикацию ссылок на предыдущую и последующую записи в WordPress есть готовые функции next_post_link() и previous_post_link(), которые и реализуют постраничную навигацию. Они подробно описаны в кодексе — https://codex.wordpress.org/next_post_link, https://codex.wordpress.org/previous_post_link и я не буду на этом останавливаться.
Стандартная постраничная навигация WordPress
Если вы пользовались данными функциями, то обратили внимание, что у самой первой записи нет ссылки на предыдущую публикацию. И это верно, ведь это самая первая запись на блоге. Равно как и у самой свежей записи нет ссылки на следующую страницу, что так же логично.
Как видно из рисунка первая страница ссылается только на одну другую запись блога (на вторую). Равно как и последняя (пятая) имеет только одну ссылку (на предыдущую запись). Остальные страницы содержат по две ссылки, на предыдущую и следующую записи.
Закольцованная постраничная навигация WordPress
В блоге у Тимура Камаева я подсмотрел одно решение, в котором на самой свежей странице есть ссылка на первую запись блога, а у самой первой записи блога есть ссылка на самую последнюю. Этим решением постраничная навигация на сайте закольцовывается.
В этом примере первая и последняя страницы ссылаются на две записи, как и остальные страницы блога.
Чтобы это реализовать я использую следующий HTML код в файле single.php:
<div class="post-navigation wrap"> <div class="prev-post"> <?php if( get_adjacent_post(false, '', true) ) { previous_post_link('%link', '<span>Назад</span> %title'); } else { $first = new WP_Query('posts_per_page=1&order=DESC'); $first->the_post(); echo '<a href="' . get_permalink() . '"><span>Назад</span> '. get_the_title() .'</a> '; wp_reset_postdata(); }; ?> </div> <div class="bull"> </div> <div class="next-post"> <?php if( get_adjacent_post(false, '', false) ) { next_post_link('%link', '<span>Вперед</span> %title'); } else { $last = new WP_Query('posts_per_page=1&order=ASC'); $last->the_post(); echo '<a href="' . get_permalink() . '"><span>Вперед</span> '. get_the_title() .'</a>'; wp_reset_postdata(); }; ?> </div> </div>
Для оформления я использую такие CSS стили:
/* Post Navigation Prev-Next*/ .wrap { display: flex; flex-direction: row; justify-content: space-between; align-items: stretch; } .post-navigation { padding: 1px; margin: 30px 0; box-shadow: 0 0 5px 1px #ccc; border-radius: 3px; background: #fff; } .post-navigation a { color: #000; text-decoration: none; } .post-navigation a:hover { color: #ccc; } .post-navigation span { display: block; color: #369; font-weight: bold; } .prev-post, .next-post {margin: 29px 39px; width: calc(100% - 110px);} .bull {margin: 29px 0; color: #888; background: #ccc; width: 1px;} .next-post {text-align: right;}
Выглядеть данный блок ссылок будет следующим образом:
Благодарности
При написании статьи были использованы следующие источники: