Как найти и исправить orphan pages в WordPress, чтобы они не выпадали из индекса

Страницы-сироты в WordPress — это материалы, на которые нет внутренних ссылок с других страниц сайта. Формально они могут быть опубликованы и даже попадать в sitemap, но для пользователя и поискового робота такие страницы часто выглядят как тупик. На небольшом сайте это незаметно, а на контентном проекте сироты быстро накапливаются после редизайна, миграции, смены структуры рубрик или ручной правки меню.

Проблема обычно не в одной странице, а в процессе: материал создали, опубликовали, потом убрали из блока «похожие записи», не добавили в рубрику, не вывели в архиве и забыли про него. В итоге страница есть, но связности внутри сайта у нее нет.

Как понять, что у вас именно orphan pages, а не просто слабая страница

Сирота — это не обязательно плохой материал. Диагностировать нужно по связям, а не по трафику. Если страница индексируется, но на нее не ведут внутренние ссылки, она может получать меньше обхода и хуже передавать вес внутри структуры сайта.

Признаки, которые стоит проверить в первую очередь

  • страница есть в sitemap.xml, но не встречается в меню, рубриках и блоках перелинковки;
  • в админке нет очевидных входящих ссылок из других записей;
  • после изменения структуры сайта старые URL остались без новых ссылок;
  • страница доступна только по прямой ссылке из внешнего источника или из истории браузера;
  • в Search Console страница индексируется, но почти не получает переходов и редко обновляется в кэше.

Что важно отличать от orphan pages

Не путайте сироты с намеренно изолированными страницами: страницами входа, страницами акций, служебными лендингами, которые должны жить отдельно. Если страница не должна быть в общей структуре, это нормально. Если же это обычный контентный материал, его лучше встроить в сеть внутренних ссылок.

Диагностика: как найти страницы без внутренних ссылок

Самый надежный способ — собрать список опубликованных URL и проверить, есть ли на них входящие внутренние ссылки. Для небольшого сайта это можно сделать вручную через краулер, для более крупного — выгрузкой из базы или через SEO-сканер. Ниже — практичный вариант без привязки к конкретному плагину.

Быстрая проверка через SQL

Если у вас есть доступ к базе, можно сначала получить список опубликованных записей и понять, какие из них не попадают в навигацию и архивы. Полностью автоматическая проверка внутренних ссылок через SQL неудобна, но для первичной диагностики полезно отобрать кандидатов.

SELECT ID, post_title, post_name, post_type, post_date
FROM wp_posts
WHERE post_status = 'publish'
  AND post_type IN ('post', 'page')
ORDER BY post_date DESC;

Дальше проверьте каждый кандидат в краулере или через поиск по сайту. Если страница нигде не упоминается, это и есть повод для ручной доработки структуры.

Проверка через PHP в админке

Если нужен более прикладной вариант, можно вывести список опубликованных записей и вручную отметить те, которые не входят в основную навигацию. Ниже пример кода для служебной страницы в админке. Он не ищет все входящие ссылки по всему сайту, но помогает быстро собрать список материалов для аудита.

add_action('admin_menu', function () {
    add_management_page(
        'Orphan audit',
        'Orphan audit',
        'manage_options',
        'orphan-audit',
        function () {
            $posts = get_posts([
                'post_type'      => ['post', 'page'],
                'post_status'    => 'publish',
                'posts_per_page' => 50,
                'orderby'        => 'date',
                'order'          => 'DESC',
            ]);

            echo '<div class="wrap"><h1>Orphan audit</h1><ul>';
            foreach ($posts as $post) {
                printf(
                    '<li><a href="%s" target="_blank" rel="noopener">%s</a></li>',
                    esc_url(get_permalink($post)),
                    esc_html(get_the_title($post))
                );
            }
            echo '</ul></div>';
        }
    );
});

Этот способ полезен, если вы хотите быстро пройтись по свежим публикациям и проверить, куда они встроены: в рубрику, блок «похожие материалы», хлебные крошки, архивы или ручные подборки.

Как исправить orphan pages без хаотичной перелинковки

Главная ошибка — просто раскидать ссылки по случайным статьям. Так можно создать шум, но не структуру. Лучше идти по сценарию: сначала определить роль страницы, потом выбрать точку входа, затем добавить ссылки там, где пользователь ожидает их увидеть.

Шаг 1. Определите тип страницы

  • Контентная статья — должна быть встроена в рубрику, архив и блоки рекомендаций.
  • Лендинг — обычно получает ссылки из меню, хаба или тематической подборки.
  • Служебная страница — может быть изолированной, но тогда ей не нужен индекс и она не должна мешать структуре.

Шаг 2. Добавьте входящие ссылки из релевантных мест

Для статьи лучше всего работают ссылки из:

  • родительской рубрики или тематического хаба;
  • связанных материалов в конце текста;
  • хлебных крошек;
  • архива автора или рубрики;
  • контекстных блоков в тексте, если тема действительно связана.

Если на сайте есть шаблон рубрики, проверьте, не скрывает ли он часть материалов из-за фильтров, сортировки или ограничений по количеству записей. Иногда страница не сирота по логике, а просто не выводится в нужном архиве.

Шаг 3. Сделайте автоматическую подсветку связанных записей

Ниже пример функции, которая выводит блок связанных записей по рубрикам текущего поста. Это не заменяет редакционную перелинковку, но помогает встроить материал в структуру сайта без ручной правки каждого шаблона.

function wpqa_related_posts_block() {
    if (!is_singular('post')) {
        return;
    }

    $categories = wp_get_post_categories(get_the_ID());
    if (empty($categories)) {
        return;
    }

    $related = new WP_Query([
        'post_type'           => 'post',
        'post_status'         => 'publish',
        'posts_per_page'      => 5,
        'post__not_in'        => [get_the_ID()],
        'category__in'        => $categories,
        'ignore_sticky_posts' => true,
    ]);

    if (!$related->have_posts()) {
        return;
    }

    echo '<section class="related-posts"><h2>Похожие материалы</h2><ul>';
    while ($related->have_posts()) {
        $related->the_post();
        printf('<li><a href="%s">%s</a></li>', esc_url(get_permalink()), esc_html(get_the_title()));
    }
    echo '</ul></section>';

    wp_reset_postdata();
}
add_action('the_content', function ($content) {
    if (is_singular('post') && in_the_loop() && is_main_query()) {
        $content .= wp_kses_post(wpqa_related_posts_block());
    }
    return $content;
}, 20);

Если вы не хотите вмешиваться в the_content, лучше вывести блок через шаблон темы: так проще контролировать верстку и не дублировать блок в RSS или в нестандартных контекстах.

Сравнение подходов: плагин, код или ручная правка

ПодходКогда подходитПлюсыМинусы
Ручная перелинковкаНебольшой сайт, 20–100 материаловПолный контроль, без лишнего кодаТрудно масштабировать, легко пропустить сироты
Код в темеНужен стабильный шаблон связейАвтоматизация, единый стандартТребует аккуратной поддержки и тестов
SEO-плагинНужны отчеты и массовый аудитБыстрее найти проблемные URLЗависимость от интерфейса и ограничений плагина

Если на сайте уже используется Clearfy Pro, его инструменты для чистки и SEO-настроек могут помочь убрать лишний шум в структуре и быстрее увидеть проблемные страницы. Но саму перелинковку все равно лучше выстраивать по редакционной логике, а не только по отчетам.

Проверка результата после внедрения

После исправления важно не ограничиваться визуальной проверкой. Нужно убедиться, что страница реально получила новые входящие ссылки и стала частью структуры сайта.

Что проверить вручную

  • страница доступна из рубрики, архива или тематического хаба;
  • на нее есть хотя бы одна релевантная внутренняя ссылка из другой записи;
  • она не потерялась в меню из-за фильтрации по типу записи или статусу;
  • в исходном коде страницы есть ожидаемые ссылки, а не только визуальные блоки;
  • URL по-прежнему присутствует в sitemap, если он должен индексироваться.

Что проверить в Search Console и краулере

После обновления структуры пройдитесь по сайту краулером и сравните количество внутренних ссылок на проблемные URL. В Search Console полезно смотреть, как меняется частота обхода и появляются ли новые переходы по внутренним ссылкам. Если страница остается в индексе, но не получает внутренних переходов, значит связка еще слабая.

Частые ошибки и как их исправить

Ссылка есть только в блоке, который не рендерится на мобильных

Иногда блок перелинковки скрыт CSS-ом или выводится только в десктопной версии. Для робота и пользователя это плохой вариант. Проверьте, что ссылка реально присутствует в HTML на всех устройствах.

Материал добавили в меню, но не в контентную структуру

Меню помогает навигации, но не решает проблему тематической связности. Если страница важная, у нее должны быть и контекстные ссылки, и место в архиве, и нормальная рубрика.

Сироту закрыли noindex вместо исправления

Это рабочий вариант только для страниц, которые не должны индексироваться по смыслу. Если материал полезный, лучше встроить его в сайт, чем прятать от поиска.

Перелинковку сделали слишком агрессивной

Когда в каждый абзац вставляют одинаковые ссылки, текст становится нечитабельным, а структура — искусственной. Ставьте ссылки там, где они помогают продолжить тему, а не просто увеличивают счетчик.

Чек-лист перед публикацией правок

  • страница определена как контентная, лендинг или служебная;
  • есть минимум один релевантный входящий линк;
  • страница присутствует в нужной рубрике или хабе;
  • блок связанных материалов не дублирует одну и ту же ссылку;
  • URL не конфликтует с каноническим адресом;
  • страница не закрыта от индексации без причины;
  • после правок проверен HTML и мобильная версия;
  • краулер видит новые внутренние ссылки.

Практические советы по безопасности и производительности

Если вы добавляете код для автоматической перелинковки или аудита, не встраивайте его в произвольный файл темы. Лучше использовать дочернюю тему или небольшой mu-plugin, чтобы не потерять изменения при обновлении. Для запросов к базе используйте стандартные API WordPress и не выполняйте тяжелые операции на каждом просмотре страницы.

Если сайт большой, не пытайтесь пересчитывать все внутренние связи на лету. Сначала соберите отчет по сиротам по расписанию, а уже потом вручную или полуавтоматически исправляйте структуру. Это снизит нагрузку на базу и не замедлит фронтенд.

Для сайтов, где много технических дублей и мусора в структуре, полезно сначала навести порядок в SEO-настройках, а потом уже заниматься перелинковкой. Иначе вы будете связывать между собой страницы, которые вообще не должны участвовать в индексации.

Как избежать проблем с кешированием в WordPress: практические советы и решения
21.09.2026
Как запретить индексацию отдельных страниц в WordPress через robots.txt, noindex и .htaccess
16.08.2026
Автоматическое создание резервных копий в WordPress с помощью плагинов и кода
27.09.2026
Как удалить неиспользуемые мета данные в WordPress: практическое руководство
12.09.2026
Как избежать проблем с просмотром видео в WordPress: практические решения и плагины
02.10.2026