Как удалить внутренние ссылки в WordPress по условию

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

Почему может потребоваться удалять внутренние ссылки по условию

Удаление внутренних ссылок не должно быть хаотичным, ведь это может навредить SEO и удобству пользователей. Но есть несколько распространённых причин, когда такая задача становится актуальной:

  • Удаление ссылок на страницы с определённым статусом (например, черновики или приватные страницы).
  • Исключение ссылок на устаревшие или временные разделы сайта.
  • Устранение ссылок для улучшения SEO, например, добавление rel="nofollow" или полное удаление ссылок в определённых условиях.
  • Управление ссылками в зависимости от роли пользователя или типа контента.

В зависимости от конкретной задачи можно использовать разные подходы — от фильтров WordPress до кастомных плагинов.

Удаление внутренних ссылок через фильтр the_content

Самый простой и гибкий способ — отфильтровать содержимое поста перед выводом и убрать нужные ссылки. Для этого используется хук the_content. Пример кода для удаления ссылок на посты с определённой категорией.

Пример: Удаление ссылок на записи из категории «Архив»

function clearfy_remove_internal_links_conditionally($content) {
    // Используем DOMDocument для парсинга HTML
    libxml_use_internal_errors(true);
    $dom = new DOMDocument();
    $dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));
    $anchors = $dom->getElementsByTagName('a');

    // Проходим в обратном порядке, чтобы не ломать итератор при удалении
    for ($i = $anchors->length - 1; $i >= 0; $i--) {
        $a = $anchors->item($i);
        $href = $a->getAttribute('href');

        // Проверяем, является ли ссылка внутренней
        if (strpos($href, home_url()) === 0) {
            // Получаем ID поста по URL
            $post_id = url_to_postid($href);
            if ($post_id) {
                $categories = wp_get_post_categories($post_id);
                // Проверяем, есть ли категория с названием 'Архив'
                foreach ($categories as $cat_id) {
                    $cat = get_category($cat_id);
                    if ($cat->name === 'Архив') {
                        // Удаляем ссылку, заменяя на текст
                        $text = $a->textContent;
                        $textNode = $dom->createTextNode($text);
                        $a->parentNode->replaceChild($textNode, $a);
                        break;
                    }
                }
            }
        }
    }

    // Получаем очищенный HTML без <html><body>
    $body = $dom->getElementsByTagName('body')->item(0);
    $new_content = '';
    foreach ($body->childNodes as $child) {
        $new_content .= $dom->saveHTML($child);
    }

    return $new_content;
}
add_filter('the_content', 'clearfy_remove_internal_links_conditionally');

В этом примере мы удаляем все ссылки на записи из категории "Архив", заменяя их на простой текст, чтобы не нарушать структуру и не портить пользовательский опыт.

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

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

  • Remove Orphan Shortcodes — помогает убрать неиспользуемые шорткоды, но иногда может помочь и с ссылками.
  • Broken Link Checker — плагин, который сканирует сайт на битые ссылки и позволяет их редактировать или удалять.
  • WP External Links (nofollow new tab etc.) — позволяет управлять внешними и внутренними ссылками, включая добавление атрибутов, отключение ссылок и пр.

Но для сложных условий, как в нашем примере, лучше использовать кастомные решения.

Удаление ссылок в меню WordPress по условию

Внутренние ссылки часто находятся не только в контенте, но и в меню. Для управления ими можно использовать фильтр wp_nav_menu_objects. Например, удалим пункты меню, которые ведут на страницы с меткой "скрыто".

function clearfy_filter_menu_items($items, $args) {
    foreach ($items as $key => $item) {
        if ($item->object === 'page') {
            $post_id = $item->object_id;
            if (has_tag('скрыто', $post_id)) {
                unset($items[$key]);
            }
        }
    }
    return $items;
}
add_filter('wp_nav_menu_objects', 'clearfy_filter_menu_items', 10, 2);

Этот код удалит из меню все ссылки на страницы с тегом "скрыто". Такой подход помогает динамически управлять меню без редактирования вручную.

Практические советы и рекомендации

При удалении внутренних ссылок важно учитывать несколько моментов:

  • Кэширование. После внесения изменений очистите кэш сайта и браузера, чтобы увидеть результаты.
  • SEO. Удаление ссылок может повлиять на внутренний PageRank, поэтому продумывайте стратегию ссылочного веса.
  • Тестирование. Проверяйте работу кода на тестовом сайте, чтобы избежать ошибок и поломок.
  • Удобство пользователей. Заменяйте удалённые ссылки на текст, чтобы не ухудшать UX.

Заключение

Удаление внутренних ссылок в WordPress по условию — задача, требующая аккуратного подхода и точного кода. Используя фильтры the_content и wp_nav_menu_objects, вы можете гибко управлять ссылками в контенте и меню. При необходимости подключайте плагины для дополнительного контроля. Приведённые примеры помогут быстро начать и настроить логику под свои нужды.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить неиспользуемые таксономии в WordPress без рисков
14.01.2026
Как удалить всплывающие окна только на нужных страницах WordPress
17.01.2026
Как удалить повторяющиеся теги в WooCommerce без риска для сайта
11.05.2026
Как удалить всплывающие окна в WordPress надежно и быстро
01.01.2026
Как удалить пустые виджеты в WordPress быстро и надежно
15.04.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙