Избегаем дублирования заголовков при использовании тега nextpage

Как известно, в WordPress есть такой тег <!--nextpage-->, который позволяет разбить длинную статью на две и больше частей (или сделать больше уникальных страниц для тех, кто создает сайты под ссылочные биржи).

Также известно, что Google не любит, когда заголовки страниц полностью дублируются (о чем он и сделает замечание в панели вебмастера).

При разбивке страницы тегом <!--nextpage--> заголовки дублируются один в один.

Сегодня потратила добрую половину дня, чтобы понять, как это решить. Поиск по официальной документации и форуму WordPress ничего не дал, равно как и применение различных SEO-плагинов. Наконец-то, к большой моей радости, такое решение нашлось в статье одного  индонезийского веб-дизайнера «Avoiding Duplicate Title Tag on WordPress Post».

Идея такова.

Нужно найти в файле header.php строку, содержащую

<title> ... </title>

Перед </title> добавить

<?php
 if ( get_query_var('page') ) {
 print ' – Часть ' . get_query_var('page');
 }
?>

Далее открыть single.php (в шаблонах Брайана Гарднера — index.php), и изменить


<?php the_title(); ?>

на


<?php
the_title();
if ( get_query_var('page') ) {
print ' - Часть ' . get_query_var('page');
}
?>

Это позволит вывести красивый заголовок для второй страницы, а не только мета-тег title.

Если нет какой-то конкретной задачи по поисковой оптимизации, SEO-плагины последнее время редко использую, Google официально не учитывает мета-тег keywords, думаю для Яндекса это уже тоже не столь актуально, а title можно сделать красивый и в шаблоне WordPress.

Вот пример кода (вместе с кодом нумерации страниц для статей разделенных тегом <!--nextpage-->)


<title>
<?php if ( is_home() ) { ?><?php bloginfo('description'); ?> - <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_search() ) { ?><?php echo $s; ?> - <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_single() ) { ?><?php wp_title(''); ?> - <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_page() ) { ?><?php wp_title(''); ?> - <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_category() ) { ?>Рубрика: <?php single_cat_title(); ?>. <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_month() ) { ?>Архивы <?php the_time('F Y'); ?>. <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_tag() ) { ?> <?php bloginfo('name'); ?>: <?php single_tag_title();?><?php } ?>
<?php if ( is_404() ) { ?>К сожалению, по вашему запросу ничего не найдено! - <?php bloginfo('name'); ?><?php } ?>
<?php if ( get_query_var('page') ) { print ' - Часть ' . get_query_var('page'); } ?>
</title>

Напоследок, плагин Юрия Белотицкого для автоматической разбивки длинных статей (там же инструкция по установке). Для тех страниц, которые плагином разбились некрасиво (например, только один последний абзац перенесся на на вторую страницу), можно расставить тег <!--nextpage--> вручную или использовать тег <!--nopage-->.

Также учтите, что тег

<!--nextpage-->
и ЧПУ вида site.ru/pagename.html не лучшее сочетание, т.к. в итоге для второй страницы будет адрес вида site.ru/pagename.html/2.