Если в подвале, виджетах или коде темы WordPress внезапно появились чужие ссылки, рекламный спам или невидимые блоки, это почти всегда не «особенность шаблона», а следствие взлома, заражённой темы или неаккуратной правки файлов. Такие вставки могут быть видны только поисковым роботам, показываться не всем посетителям или прятаться в PHP-файлах так, что их не замечают при обычной проверке сайта.
Удалять их нужно не точечно и не только в одном месте. Сначала важно понять, где именно живёт вредоносная вставка: в файлах темы, в виджете, в базе данных, в пользовательском коде или в плагине, который подмешивает контент. И только потом чистить сайт, иначе ссылка вернётся после следующего обновления страницы или переустановки шаблона.
С чего начать, если на сайте уже есть подозрительные ссылки
Если вы уже видите чужие ссылки или спам, не начинайте с обновления темы «на всякий случай». Сначала ограничьте последствия. Для сайта с регистрацией, интернет-магазина или клиентского проекта это особенно важно: заражённый шаблон может продолжать отдавать вредоносный код посетителям и поисковым системам, даже если админка выглядит нормально.
Что сделать в первую очередь:
- сохранить резервную копию текущего состояния сайта и базы данных, даже если они уже заражены;
- временно ограничить доступ к админке для лишних пользователей;
- проверить, не появлялись ли новые администраторы, редакторы или неизвестные FTP/SSH-доступы;
- зафиксировать, где именно видна вставка: на всех страницах, только в подвале, только в виджетах, только для гостей или только в исходном коде;
- если есть возможность, перевести сайт в режим обслуживания или хотя бы убрать его из индексации на время очистки.
Это не удаляет проблему, но снижает риск, что вредоносный код будет дальше распространяться через сайт или повторно внедряться через скомпрометированные учётные записи.
Где обычно прячутся скрытые ссылки и спам в WordPress
На практике такие вставки чаще всего находятся не в одном месте, а в нескольких сразу. Если искать только в подвале, можно пропустить источник, из которого код подтягивается автоматически.
Файлы темы
Чаще всего проверяют footer.php, functions.php, header.php, шаблоны страниц и отдельные файлы, которые подключаются через get_template_part(). В заражённых темах вредоносный код нередко маскируют под обычную функцию, а саму ссылку собирают из частей, чтобы её было сложнее заметить при беглом просмотре.
Особенно настораживают:
- длинные строки, закодированные через
base64,gzinflate,str_rot13или похожие функции; - непонятные
eval(),assert(),preg_replaceс модификатором/eв старом коде; - подключение внешних скриптов с неизвестных доменов;
- код, который вставляет HTML только для гостей, поисковых роботов или пользователей с определённым user-agent.
Виджеты и настройки в базе данных
Скрытая ссылка может быть не в файле темы, а в тексте виджета, блоке HTML, настройках темы или в опциях, которые хранятся в базе данных. Это особенно часто встречается на сайтах, где кто-то однажды вставил код через «Внешний HTML» или через настройки темы, а потом забыл про него.
Проверяйте:
- раздел Внешний вид → Виджеты;
- настройки темы в админке, если у неё есть собственная панель;
- блоки в редакторе сайта, если используется блочная тема;
- записи и страницы с вставками в конце текста, особенно если на сайте есть старые материалы с ручной HTML-разметкой.
Плагины и пользовательский код
Иногда вредоносная ссылка сидит не в теме, а в плагине, сниппете кода или в mu-plugins. Если вы используете плагин для вставки кода в шапку и подвал, проверьте и его тоже. На клиентских сайтах я нередко вижу ситуацию, когда тему уже заменили, а спам остался, потому что он подмешивался через отдельный плагин или через пользовательский PHP-файл в wp-content/mu-plugins.
Как безопасно искать вредоносные вставки
Самый надёжный способ — не гадать по внешнему виду сайта, а пройтись по файлам и базе данных. Если у вас есть доступ к хостингу, используйте файловый менеджер, SSH или SFTP. Не редактируйте заражённые файлы прямо в админке, если не уверены, что делаете: при ошибке можно сломать сайт, а при активном заражении — потерять следы источника.
Ищите не только саму ссылку, но и характерные признаки маскировки:
- длинные бессмысленные строки;
- внешние домены, которых нет в документации темы;
- скрытый текст через CSS, например
display:none,visibility:hidden,position:absolute; left:-9999px; - ссылки с маленьким шрифтом, белым цветом на белом фоне или с нулевой высотой;
- код, который выводится только при определённых условиях.
Если есть доступ к SSH, удобно искать по файлам темы и сайта через grep. Команда ниже полезна именно для поиска подозрительных функций и внешних ссылок, но она не заменяет ручную проверку: легитимный код тоже может содержать эти слова.
grep -RIn --exclude-dir=node_modules --exclude-dir=.git -E 'base64_decode|gzinflate|str_rot13|eval\(|assert\(|https?://' wp-content/themes wp-content/pluginsПосле такого поиска откройте найденные файлы вручную и проверьте контекст. Если строка выглядит как часть обычной библиотеки, это ещё не заражение. Если же код спрятан в середине шаблона без понятной причины, это уже повод для удаления и дальнейшей проверки.
Как удалить скрытые ссылки и не повредить сайт
Удалять нужно только после того, как вы поняли источник. Если просто вырезать подозрительную строку из заражённой темы, а потом обновить тему из того же источника, проблема вернётся. Если удалить не тот фрагмент, можно сломать вывод меню, подвала, виджетов или даже весь шаблон.
Практически безопасный порядок такой:
- Сделать резервную копию файлов и базы данных.
- Сравнить текущую тему с чистой версией из официального источника или из собственного архива.
- Удалить только явно вредоносные вставки, а не весь файл целиком.
- Если тема сомнительная или скачана не из надёжного источника, заменить её на чистую копию или переустановить из официального архива.
- Проверить, не остались ли следы в базе данных, виджетах и настройках плагинов.
Если вы нашли заражение в functions.php или в шаблоне подвала, не ограничивайтесь одним файлом. Проверьте соседние файлы темы: вредоносный код часто дублируют в нескольких местах, чтобы он пережил частичную очистку.
Если сайт работает на коммерческой теме с регулярными обновлениями, лучше брать чистую копию из официального источника и переносить только свои правки. Это надёжнее, чем вручную вычищать десятки подозрительных строк из неизвестной сборки.
Что делать с базой данных и виджетами
После очистки файлов обязательно проверьте базу данных. Скрытые ссылки часто живут в текстах виджетов, в настройках темы, в произвольных блоках и в старых записях, куда когда-то вставили HTML вручную. Если удалить только файл темы, а в базе останется вредоносный код, он снова появится на сайте.
Проверьте:
- тексты виджетов в разделе Внешний вид → Виджеты;
- настройки в Внешний вид → Настроить, если тема использует собственные поля;
- записи и страницы с HTML-блоками;
- опции плагинов, которые умеют вставлять код в шапку, подвал или после контента.
Если вы работаете с базой напрямую, делайте это только после резервной копии. Неправильный запрос может удалить не только спам, но и нормальный контент. Для большинства владельцев сайтов безопаснее сначала искать через админку и только потом переходить к SQL, если проблема не находится обычными средствами.
Как проверить, что сайт действительно очищен
После удаления вредоносных вставок не ограничивайтесь визуальной проверкой главной страницы. Скрытый спам часто показывается только в исходном коде, для поисковых роботов или на отдельных шаблонах.
Проверьте сайт в нескольких режимах:
- откройте страницы в браузере и посмотрите исходный код;
- проверьте подвал, боковую колонку, мобильную версию и страницы с нестандартными шаблонами;
- посмотрите сайт в режиме инкогнито и без авторизации;
- сравните отображение для разных браузеров;
- если есть Search Console, проверьте, не появились ли предупреждения о спаме или взломе.
Полезно также просмотреть список файлов темы по дате изменения. Если заражение было недавним, вы быстро увидите, какие файлы менялись без вашего участия. Это помогает понять, не остались ли следы в других шаблонах.
Когда одной очистки недостаточно
Если на сайте уже были неизвестные администраторы, подменённые файлы, редиректы или повторное заражение после удаления спама, проблема не ограничивается темой. В таком случае нужно смотреть шире: пароли, права доступа, плагины, сервер и резервные копии.
Что проверить дополнительно:
- сменить пароли всех администраторов, FTP/SFTP, панели хостинга и базы данных;
- удалить неизвестные учётные записи WordPress;
- проверить, не установлен ли сомнительный плагин или nulled-тема;
- обновить WordPress, плагины и тему из официальных источников;
- убедиться, что резервные копии не заражены;
- проверить права на файлы и доступ к серверу, если у вас VPS или выделенный сервер.
Для сайта на общем хостинге часть этих шагов придётся делать через поддержку хостинга. Для проекта на VPS обычно нужно ещё проверить журналы веб-сервера и следы несанкционированного доступа. Если заражение повторяется, одной ручной чистки темы уже недостаточно.
Что помогает не допустить повторного заражения
Полностью исключить риск нельзя, но можно сильно сократить вероятность повторения. Здесь важна не одна мера, а связка: надёжные источники тем и плагинов, ограничение прав пользователей, регулярные резервные копии и контроль изменений в файлах.
Для практики это выглядит так:
- не ставить темы и плагины из сомнительных архивов;
- не использовать nulled-версии, потому что они часто уже содержат закладки или скрытый код;
- ограничить число администраторов и регулярно пересматривать список пользователей;
- включить двухфакторную аутентификацию, если это возможно в вашем сценарии;
- делать резервные копии до обновлений и хранить их отдельно от сайта;
- следить за изменениями в файлах темы и плагинов;
- обновлять только из официальных источников и не откладывать критические исправления безопасности.
Если вам нужно дополнительно убрать лишние служебные элементы WordPress и сократить поверхность атаки, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но важно понимать границу: такой плагин не лечит уже заражённую тему и не заменяет ручную проверку файлов, базы данных и учётных записей.
Если коротко, скрытые ссылки и спам в шаблоне WordPress удаляются не «по одному месту», а через последовательную проверку темы, базы данных, виджетов и прав доступа. Чем раньше вы отделите профилактику от уже случившегося инцидента, тем меньше шанс оставить на сайте скрытый код или удалить не тот фрагмент.