Вопрос или проблема
Я использую следующий код в functions.php, чтобы добавить теги rel prev/next к пагинированному контенту:
function add_rel_nextprev_to_paginated_content()
{
global $paged;
if ( get_previous_posts_link() ) { ?><link rel="prev" href="https://wordpress.stackexchange.com/questions/313550/<?php echo get_pagenum_link( $paged - 1 ); ?>"><?php }
if ( get_next_posts_link() ) { ?><link rel="next" href="<?php echo get_pagenum_link( $paged + 1 ); ?>"><?php }
}
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
add_action('wp_head', 'add_rel_nextprev_to_paginated_content');
Это хорошо работает для категорий, тегов и другого контента, но не для постов, которые были разделены на несколько страниц с помощью тега WP.
Тем не менее, я не могу найти нужную функцию для вызова следующей страницы пагинированного поста.
Любая помощь будет очень ценна.
После некоторого исследования я нашел фрагмент кода, который идеально выполняет задачу.
Смотрите https://orbitingweb.com/blog/adding-next-and-prev-tags-to-paginated-posts/ для деталей и дальнейших объяснений.
Ответ или решение
Добавление тегов rel="prev"
и rel="next"
в пагинированные посты является важной частью SEO-оптимизации, так как помогает поисковым системам лучше индексировать контент, распределенный на нескольких страницах. Вопрос, поднятый в проблеме, касается добавления этих тегов к постам, которые были разделены на несколько страниц с помощью указанных тегов WordPress.
Теория
При разбиении длинных постов на страницы с помощью WordPress, используется тег <!--nextpage-->
. Однако, добавление тегов rel="prev"
и rel="next"
для указания правильного порядка страниц не происходит автоматически. Это может привести к трудностям в индексировании таких страниц поисковыми системами и, как следствие, к проблемам со SEO.
Основные концепции, которые здесь вступают в игру, включают в себя понимание HTML, PHP и системы хуков WordPress, которая позволяет модифицировать поведение темы или плагина. Функции get_previous_posts_link()
и get_next_posts_link()
часто используются для навигации по страницам архивов, но они не подходят для навигации в пределах одной статьи, которая была разделена на несколько страниц.
Пример
Предоставленный код показывает, как можно добавить теги rel="prev"
и rel="next"
для архива постов:
function add_rel_nextprev_to_paginated_content()
{
global $paged;
if ( get_previous_posts_link() ) { ?>
<link rel="prev" href="<?php echo get_pagenum_link( $paged - 1 ); ?>">
<?php }
if ( get_next_posts_link() ) { ?>
<link rel="next" href="<?php echo get_pagenum_link( $paged + 1 ); ?>">
<?php }
}
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
add_action('wp_head', 'add_rel_nextprev_to_paginated_content');
Этот код удаляет стандартные ссылки соседних постов в wp_head
и добавляет свои собственные. Однако он работает только для архивов и категорий, но не для постов, разбитых на страницы тегом <!--nextpage-->
.
Применение
Чтобы добавить аналогичные теги rel
для многостраничных постов, необходимо использовать немного измененный подход. Вместо функций для архивов, необходимо использовать функцию wp_link_pages()
, которая предоставляет ссылки на отдельные страницы внутри одного поста, и соответствующим образом обрабатывать ее вывод.
Можно использовать следующий пример кода, который будет добавлять теги rel="prev"
и rel="next"
для многостраничных постов:
function add_rel_nextprev_to_paginated_posts()
{
global $page, $numpages;
if ( $numpages > 1 ) {
if ( $page > 1 ) {
$prev_link = get_pagenum_link($page - 1);
echo '<link rel="prev" href="' . $prev_link . '">';
}
if ( $page < $numpages ) {
$next_link = get_pagenum_link($page + 1);
echo '<link rel="next" href="' . $next_link . '">';
}
}
}
add_action('wp_head', 'add_rel_nextprev_to_paginated_posts');
В этом коде глобальные переменные $page
и $numpages
используются для определения текущей страницы и общего числа страниц поста. Затем, в зависимости от номера текущей страницы, создаются и выводятся соответствующие теги rel
.
Этот метод гарантирует, что каждое представление страницы поста будет правильно снабжено необходимыми тегами для навигации. Это поможет не только в SEO, но и в улучшении пользовательского опыта, так как навигация по страницам поста станет более интуитивной.
При разработке таких решений также стоит учитывать тестирование на различных темах, так как некоторые из них могут уже иметь встроенные функции для обработки пагинации постов, что может вызвать конфликты или избыточность кода. Тщательное тестирование и проверка вывода в браузере помогут избежать подобных проблем.
Надеюсь, данное объяснение и кодовые примеры помогут в успешной реализации вашей задачи. При возникновении сложностей или вопросов дальнейшего развития функциональности для специфических нужд, всегда полезно обращаться к документации WordPress и специфическим форумам сообщества для получения актуальных и конкретных советов.