Страницы-сироты в 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-настройках, а потом уже заниматься перелинковкой. Иначе вы будете связывать между собой страницы, которые вообще не должны участвовать в индексации.