Как удалить переходы по ссылкам в WordPress без плагинов

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

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

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

  • Сайт находится на стадии разработки или рестайлинга — ссылки временно отключаются, чтобы избежать переходов на неработающие страницы.
  • Внутренние ограничения — ссылки видны, но переходы по ним запрещены для определённых ролей пользователей.
  • Тестирование пользовательского интерфейса — чтобы проверить поведение элементов без переходов.
  • Защита от кликов по внешним ссылкам или уменьшение выхода трафика.

Использовать плагины для таких задач не всегда удобно и оправдано, особенно если задача узкоспециализированная. Рассмотрим, как сделать это с помощью функций WordPress и JavaScript.

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

Обработка контента постов перед выводом

Самый прямой способ — изменить HTML-код поста перед выводом. Для этого используем фильтр the_content. Мы можем найти все ссылки и удалить у них атрибут href или заменить теги <a> на обычные <span>.

Пример кода функции в файле functions.php вашей темы или в кастомном плагине:

function wpdemo_remove_links_from_content($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');
    $remove = [];
    foreach ($anchors as $anchor) {
        // Собираем ссылки для удаления, т.к. нельзя менять DOM во время итерации
        $remove[] = $anchor;
    }
    foreach ($remove as $anchor) {
        $span = $dom->createElement('span', $anchor->nodeValue);
        // Копируем классы и стили, если нужны
        if ($anchor->hasAttributes()) {
            foreach ($anchor->attributes as $attr) {
                if (in_array($attr->name, ['class', 'style'])) {
                    $span->setAttribute($attr->name, $attr->value);
                }
            }
        }
        $anchor->parentNode->replaceChild($span, $anchor);
    }
    $html = $dom->saveHTML();
    // Убираем лишние теги, оставляем только тело
    preg_match('/<body>(.*)<\/body>/s', $html, $matches);
    return $matches ? $matches[1] : $content;
}
add_filter('the_content', 'wpdemo_remove_links_from_content');

Этот код полностью убирает кликабельность ссылок из содержимого постов, заменяя теги a на span. При этом сохраняются стили и классы, чтобы сохранить оформление.

Преимущества и недостатки метода

Плюсы:

  • Полностью удаляет переходы по ссылкам в тексте.
  • Работает на стороне сервера, нет задержек.
  • Не требует подключения скриптов.

Минусы:

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

Отключение переходов по ссылкам с помощью JavaScript

Деактивация всех ссылок на странице

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

Пример скрипта, который можно добавить в футер темы или через функцию wp_enqueue_script:

function wpdemo_disable_links_script() {
    ?>
    <script>
      document.addEventListener('DOMContentLoaded', function() {
        document.querySelectorAll('a').forEach(function(link) {
          link.addEventListener('click', function(event) {
            event.preventDefault();
          });
          // Можно добавить стиль, например, курсор по умолчанию
          link.style.cursor = 'default';
          link.style.textDecoration = 'none';
          link.style.color = 'inherit';
        });
      });
    </script>
    <?php
}
add_action('wp_footer', 'wpdemo_disable_links_script');

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

Настройка отключения по условию

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

function wpdemo_disable_links_for_guests() {
    if (!is_user_logged_in()) {
        ?>
        <script>
          document.addEventListener('DOMContentLoaded', function() {
            document.querySelectorAll('a').forEach(function(link) {
              link.addEventListener('click', function(event) {
                event.preventDefault();
              });
              link.style.cursor = 'default';
              link.style.textDecoration = 'none';
              link.style.color = 'inherit';
            });
          });
        </script>
        <?php
    }
}
add_action('wp_footer', 'wpdemo_disable_links_for_guests');

Удаление переходов в меню WordPress

Фильтрация вывода ссылок в меню

Если нужно отключить переходы именно в меню, можно использовать фильтр walker_nav_menu_start_el для изменения HTML ссылок при выводе меню.

Пример функции, которая заменяет теги a на span в меню с определённым CSS классом:

function wpdemo_disable_menu_links($item_output, $item, $depth, $args) {
    // Проверяем, что это нужное меню, например, по имени
    if ($args->theme_location === 'primary') {
        // Заменяем <a ...> на <span ...>
        $item_output = preg_replace('/<a([^>]*)>/', '<span$1>', $item_output);
        $item_output = str_replace('</a>', '</span>', $item_output);
    }
    return $item_output;
}
add_filter('walker_nav_menu_start_el', 'wpdemo_disable_menu_links', 10, 4);

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

Особенности и рекомендации

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

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

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

  • Clearfy Pro — содержит множество опций для управления поведением ссылок, SEO и безопасности.
  • Expert Review — позволяет управлять содержимым и ссылками в обзорах и постах.

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

Итоги и советы по реализации

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

  • Для постов и страниц лучше использовать фильтр the_content с заменой тегов.
  • Для глобального отключения — JavaScript, который отменяет клики.
  • Для меню — фильтры вывода меню.

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

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

Как удалить переходы по ссылкам в WordPress без плагинов
19.03.2026
Автоматический импорт продуктов из CSV в WooCommerce: практические решения
28.03.2026
Как использовать хук WooCommerce 'woocommerce_order_status_changed' для автоматизации
25.04.2026
Как изменить регистр текста в WordPress автоматически
02.03.2026
WP-Cron не работает: как исправить проблему в WordPress
15.11.2025