Всем привет! В этой статье разберёмся, как грамотно «почистить» WordPress: убрать лишний служебный код, немного усилить безопасность и улучшить техническое SEO. Делать это будем двумя способами: через собственный код в плагине ProFunctions и через настройки плагина Clearfy Pro — вы сможете выбрать тот вариант, который комфортнее именно вам.
Почему не стоит править functions.php темы
Раньше типичный сценарий выглядел так: нашли сниппет в интернете, вставили его в functions.php активной темы — и всё работает. Проблема в том, что при обновлении или смене темы все эти правки пропадают, а иногда ещё и ломают сайт из-за одной лишней скобки.
Современный подход — вынести пользовательский код в отдельный «сервисный» плагин. Именно для этого придумали ProFunctions: он выступает безопасной заменой functions.php темы и переживает любые обновления и смену дизайна.
Что такое ProFunctions и как он работает
ProFunctions — это минималистичный плагин‑контейнер, который сам по себе ничего не делает. Он просто создаёт отдельный файл profunctions.php, куда вы можете добавлять свой PHP‑код вместо того, чтобы править файлы темы.
Основные особенности ProFunctions:
- Плагин изначально пустой — в нём нет логики, только «каркас» для ваших функций.
- Все изменения живут в плагине и не зависят от темы: можно обновлять и менять тему без риска потерять код.
- Редактирование идёт через стандартный редактор плагинов в админке: Плагины → Редактор → ProFunctions.
- У автора есть документация и готовые примеры для тем WPShop (Root и др.), где предлагается именно этот подход.
одна синтаксическая ошибка в коде может «положить» сайт (белый экран). Поэтому перед экспериментами желательно иметь доступ по FTP или к файловому менеджеру на хостинге, чтобы при необходимости быстро отредактировать или отключить плагин.
Как установить и подготовить ProFunctions
- Скачайте архив плагина ProFunctions по этой ссылке.
- В админке перейдите в Плагины → Добавить новый → Загрузить плагин, выберите архив и установите его.
- Активируйте плагин.
- Перейдите в Плагины → Редактор, в выпадающем списке выберите ProFunctions и откройте файл
profunctions.php— сюда мы и будем добавлять код.
Дальше все примеры кода из этой статьи лучше добавлять именно в profunctions.php, а не в functions.php темы.
Что такое Clearfy Pro и кому он нужен
Clearfy Pro — это комплексный плагин для оптимизации WordPress, который через удобный интерфейс помогает:
- удалять лишний код и «мусор» из
<head>и HTML‑разметки страниц; - отключать неиспользуемый функционал WordPress (emoji, embeds, REST‑ссылки и т.п.);
- бороться с дублями страниц (архивы дат, авторов, вложения, теги и др.);
- улучшать техническое SEO (Last-Modified, корректные ответы 304, robots.txt, корректные canonical и т.д.);
- немного усилить безопасность и защиту контента от копирования;
- упростить интерфейс админки, скрыв ненужные виджеты, метабоксы и пункты меню.
Проще говоря, Clearfy Pro делает примерно то же, что можно реализовать руками через ProFunctions, но в формате набора чекбоксов и переключателей, без необходимости писать код. Это удобный вариант для тех, кто предпочитает GUI и минимизирует работу с PHP.
Чистим содержимое <head>: код vs. Clearfy
WordPress по умолчанию добавляет в <head> множество служебных элементов: meta generator, RSD, WLW, shortlink, ссылки на RSS‑фиды, emoji‑скрипты, REST‑ссылки и т.п. Если вы осознанно не используете эти возможности, их можно отключить.

Удаляем meta name=»generator»
Мета‑тег generator показывает версию WordPress. Он не нужен для работы сайта, но раскрывает лишнюю информацию о CMS.
Через ProFunctions (код):
// Убираем мета-тег generator из <head>
remove_action( 'wp_head', 'wp_generator' );
// На всякий случай убираем другие следы версии
function pt_remove_generator_filter() { return ''; } add_filter( 'the_generator', 'pt_remove_generator_filter' );
Через Clearfy Pro (без кода):
- Включите опцию удаления meta generator и других технических следов WordPress в модуле «Чистка кода» / «Безопасность» (названия блоков могут немного отличаться по версии).
- Плагин автоматически уберёт тег из
<head>и других мест, где WordPress светит версию.
Удаляем RSD и WLW manifest
RSD (EditURI) и WLW manifest нужны для старых клиентов удалённой публикации. Если вы ими не пользуетесь, эти ссылки можно смело убрать.
Через ProFunctions:
// Убираем RSD link (EditURI) remove_action( 'wp_head', 'rsd_link' ); // Убираем wlwmanifest link remove_action( 'wp_head', 'wlwmanifest_link' );
Через Clearfy Pro:
- Включите опцию удаления лишних ссылок в секции
<head>— Clearfy умеет убирать RSD, WLW и другие служебные ссылки единым чекбоксом.

Удаляем shortlink
Shortlink — это короткий URL записи, который WordPress добавляет в <head> и заголовки ответа. Если вы его нигде не используете (сокращатели, соц‑кнопки и т.д.), можно отключить.
Через ProFunctions:
// Из <head> remove_action( 'wp_head', 'wp_shortlink_wp_head' ); // Из HTTP-заголовков remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
Через Clearfy Pro:
- Включите удаление лишних ссылок и shortlink в разделе чистки кода — плагин уберёт и тег, и заголовок.
Убираем ссылки на RSS‑фиды (если не нужны)
Если ваш сайт не использует RSS‑подписку, можно убрать ссылки на фиды и при желании полностью отключить их обработку.
Через ProFunctions:
// Убираем ссылки на фиды в <head>
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Полностью отключаем фиды и показываем сообщение
function pt_disable_feeds() {
wp_die(
sprintf(
__( 'Фиды отключены. Пожалуйста, перейдите на <a href="%s">главную страницу</a>.', 'promotiger' ),
esc_url( home_url( '/' ) )
)
);
}
add_action( 'do_feed', 'pt_disable_feeds', 1 );
add_action( 'do_feed_rdf', 'pt_disable_feeds', 1 );
add_action( 'do_feed_rss', 'pt_disable_feeds', 1 );
add_action( 'do_feed_rss2', 'pt_disable_feeds', 1 );
add_action( 'do_feed_atom', 'pt_disable_feeds', 1 );
add_action( 'do_feed_rss2_comments', 'pt_disable_feeds', 1 );
add_action( 'do_feed_atom_comments', 'pt_disable_feeds', 1 );
Через Clearfy Pro:
- Включите опцию отключения RSS‑фидов или удаления ссылок на них — Clearfy сам настроит поведение фидов и уберёт лишний код.
Убираем встроенные стили .recentcomments
Виджет «Свежие комментарии» добавляет собственные стили прямо в <head>. Если вы используете свои стили, этот код можно отключить.
Через ProFunctions:
function pt_remove_recent_comments_style() {
global $wp_widget_factory;
if ( isset( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ) ) {
remove_action(
'wp_head',
array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' )
);
}
}
add_action( 'widgets_init', 'pt_remove_recent_comments_style' );
Через Clearfy Pro:
- Включите пункт удаления лишних стилей
.recentcommentsв блоке чистки кода вкладки Код.
Ещё что можно отключить одним махом
Через ProFunctions вы можете дополнительно отключить emoji, REST‑ссылки, embed‑скрипты, dns-prefetch и пр., но придётся писать код. Clearfy Pro позволяет сделать это несколькими чекбоксами.
Чистим HTTP‑заголовки: X-Pingback, X-Powered-By и shortlink
Чистый HTML — это хорошо, но не менее важно привести в порядок HTTP‑заголовки: X-Pingback, X-Powered-By, shortlink и др. Это влияет на безопасность и «болтливость» сайта.

Удаляем X-Pingback
Если вы отключаете pingback/trackback и XML-RPC, нет смысла светить URL пинга через заголовок X-Pingback.
Через ProFunctions:
function pt_remove_x_pingback_header( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}
add_filter( 'wp_headers', 'pt_remove_x_pingback_header' );
Через Clearfy Pro:
- Включите опции отключения XML-RPC и pingback. Плагин уберёт X-Pingback и отключит связанные механизмы.
Скрываем X-Powered-By (версию PHP)
Версия PHP, светящаяся в заголовке X-Powered-By, теоретически помогает злоумышленникам понимать, под какие уязвимости подбирать эксплойты.
Через ProFunctions (если нет доступа к серверным настройкам):
function pt_remove_x_powered_by() {
if ( function_exists( 'header_remove' ) ) {
header_remove( 'X-Powered-By' );
}
}
add_action( 'init', 'pt_remove_x_powered_by' );
Более надёжный способ — отключить заголовок на уровне сервера (php.ini expose_php = Off, настройки Plesk/cPanel или правила nginx/Apache).
Через Clearfy Pro:
- Часть сборок Clearfy помогает убрать лишние заголовки и информацию о CMS/версии. Тем не менее X-Powered-By всё равно лучше глушить на уровне сервера.
Удаляем shortlink из заголовков
Через ProFunctions:
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
Через Clearfy Pro: включите очистку shortlink — заголовок будет отключён вместе с тегом в <head>.
ProFunctions или Clearfy Pro: что выбрать
| Критерий | ProFunctions | Clearfy Pro |
|---|---|---|
| Уровень знаний | Нужен базовый PHP, понимание хуков WordPress. | Можно работать «по чекбоксам» без кода. |
| Гибкость | Максимальная: вы пишете ровно тот код, который нужен. | Высокая, но в рамках предусмотренных разработчиками опций. |
| Риски | Ошибка в коде может сломать сайт, нужен доступ к файлам. | Риск ниже, но неверные галочки могут отключить нужный функционал. |
| Зависимость от темы | Независим от темы, код живёт в плагине. | Полностью отдельный плагин, работает с любой темой. |
| Функционал «поверх» чистки | Только то, что вы сами реализуете. | SEO‑твики, работа с дублями, защита контента, удобство админки и т.д. |
Хороший практический сценарий: базовые типовые вещи (чистка кода, отключение дублей, защита контента) доверить Clearfy Pro, а точечные доработки под свою тему/шаблоны реализовать через ProFunctions. Так вы минимизируете ручной код и в то же время сохраняете гибкость.
Итог: аккуратная чистка WordPress без лишних рисков
Вместо того чтобы править functions.php темы, сегодня гораздо разумнее вынести пользовательский код в ProFunctions и/или использовать Clearfy Pro для массовых оптимизаций. Это снижает риск потери правок, упрощает обновления и делает ваш WordPress‑проект более предсказуемым.
Выбирайте подход под себя: если вам комфортно с кодом — ProFunctions даёт полный контроль. Если хочется максимально всё «по кнопкам» — Clearfy Pro закрывает большинство типичных задач по чистке, ускорению и техническому SEO без погружения в PHP.
Ниже я приведу два бонусных блока, которые дополняют основную часть статьи. Первый блок содержит рекомендуемый «минимальный безопасный набор» настроек Clearfy Pro, чтобы можно было быстро и без лишнего риска оптимизировать WordPress через интерфейс плагина. Второй блок — это подборка готовых кодовых сниппетов для ProFunctions, которые помогут тем, кто не боится минимальной работы с PHP и хочет хранить все доработки в отдельном сервисном плагине, не трогая файлы темы.
Минимальный безопасный набор настроек Clearfy Pro
Clearfy Pro содержит десятки опций, и включать их все подряд не стоит. Ниже — ориентировочный «минимальный безопасный набор» для типичного блога или контент‑сайта на WordPress без магазина и сложных интеграций.
1. Чистка кода и оптимизация <head>
Рекомендуется включить:
- Удаление meta generator и других упоминаний версии WordPress.
- Отключение RSD (EditURI), WLW Manifest, shortlink, ссылок на REST API и ненужных ссылок в <head>.
- Отключение emoji‑скриптов и встроенного
wp-embed(если нет необходимости в встраивании постов). - Удаление встроенных стилей
.recentcommentsи других мелких «мусорных» стилей.
2. SEO и техническая оптимизация
Для большинства сайтов полезно:
- Включить добавление заголовков Last-Modified и корректной обработки 304 (If-Modified-Since) для страниц.
- Включить генерацию и редактирование robots.txt с адекватным дефолтным шаблоном.
- Поставить noindex на пагинацию архивов (страницы /page/2 и далее), если у вас классический блог без критичного значения этих страниц.
- Включить корректировку canonical‑ссылок на страницах пагинации, чтобы они указывали на основную страницу рубрики/записи.
- Включить интеграцию с Yoast SEO (если используете его): правка хлебных, очистка карты сайта, отключение служебного комментария и JSON-LD от Yoast при необходимости.
3. Работа с дублями и «мусорными» страницами
Для блогов и информационных сайтов обычно оправдано:
- Отключить или закрыть от индексации архивы дат и авторов, если у вас нет авторского портала с отдельной логикой по авторам.
- Убрать из индекса страницы вложений (attachment) и настроить редирект вложений на саму запись.
- Закрыть от индексации «сырые» страницы тегов, если они не проработаны и дублируют рубрики.
- Включить обработку параметра
?replytocomи других типичных «хвостов», создающих дубли.
4. Базовая безопасность
Без замены полноценного security‑плагина, но с полезными дополнениями:
- Скрытие страницы входа в админку (изменение URL
/wp-login.phpна свой). - Сокрытие логина администратора и вывод обобщённой ошибки авторизации вместо конкретного «неверный логин/пароль».
- Отключение xmlrpc.php (если не требуется для интеграций или мобильного приложения).
- Отключение pingback и trackback, уменьшение риска DDoS/брютфорса через эти механизмы.
- Удаление версий скриптов и стилей из URL (параметр
?ver=), чтобы включить кеширование и слегка замаскировать стек.
5. Комментарии и защита контента
Полезно включить:
- Отключение комментариев для страниц, медиафайлов и других типов записей, где они точно не нужны.
- Отключение комментариев через XML-RPC и REST API, если вы их не используете осознанно.
- Включение защиты контента: добавление ссылки на источник при копировании, опционально — отключение правой кнопки, выделения текста и части горячих клавиш.
6. Дополнительно
По ситуации:
- Отключение Gutenberg и возврат классического редактора (если вы сознательно работаете в классике).
- Отключение RSS‑лент, если не используете их для подписки, чтобы усложнить автоматический парсинг контента.
- Включение «пассивных прослушивателей» (passive event listeners) для улучшения отчётов PageSpeed.
Для новичков в Clearfy Pro можно начать с рекомендованных настроек внутри плагина, а затем вручную пройтись по вкладкам, отключив лишнее под специфику проекта.
Примеры готовых сниппетов для ProFunctions
Ниже — несколько практичных примеров кода, которые логично держать в ProFunctions. Они не завязаны на конкретную тему, но хорошо дополняют функционал Clearfy Pro или позволяют сделать то же самое тем, кто предпочитает код.
1. Единая чистка wp_head (если без Clearfy)
Компактный набор отключений для <head>: генератор, RSD, WLW, shortlink, RSS‑ссылки.
/** * Базовая чистка wp_head */ function pt_cleanup_wp_head() { // Версия WordPress remove_action( 'wp_head', 'wp_generator' ); // RSD и WLW remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); // Shortlink remove_action( 'wp_head', 'wp_shortlink_wp_head' ); // RSS (если не используете фиды) remove_action( 'wp_head', 'feed_links', 2 ); remove_action( 'wp_head', 'feed_links_extra', 3 ); } add_action( 'init', 'pt_cleanup_wp_head' );
2. Отключение emoji и встроенного wp-embed
Мелкий, но полезный апгрейд для чистого кода и чуть меньшего веса страниц.
/** * Отключаем emoji и wp-embed */ function pt_disable_emoji_and_embed() { // Emoji remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); remove_action( 'wp_print_styles', 'print_emoji_styles' ); remove_action( 'admin_print_styles', 'print_emoji_styles' ); remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); // wp-embed remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); remove_action( 'wp_head', 'wp_oembed_add_host_js' ); remove_action( 'wp_head', 'rest_output_link_wp_head', 10 ); wp_deregister_script( 'wp-embed' ); } add_action( 'init', 'pt_disable_emoji_and_embed' );
3. Удаление X-Pingback и X-Powered-By
Для тех, кто хочет дополнительно подчистить заголовки (часть функций Clearfy делает это из коробки, но код даёт полный контроль).
/** * Убираем X-Pingback из заголовков */ function pt_remove_x_pingback_header( $headers ) { unset( $headers['X-Pingback'] ); return $headers; } add_filter( 'wp_headers', 'pt_remove_x_pingback_header' ); /** * Прячем X-Powered-By (если нет доступа к серверным настройкам) */ function pt_remove_x_powered_by() { if ( function_exists( 'header_remove' ) ) { header_remove( 'X-Powered-By' ); } } add_action( 'init', 'pt_remove_x_powered_by' );
4. Пример использования хуков темы (для WPShop‑тем)
Если вы работаете с темами WPShop (Reboot, Bono и др.), удобно использовать ProFunctions для работы с хуками темы. Например, можно спрятать хлебные крошки только на странице магазина.
/** * Прячем хлебные крошки только на странице магазина (пример для Bono) */ add_filter( 'bono_breadcrumbs_do_show', function ( $result ) { if ( function_exists( 'is_shop' ) && is_shop() ) { return false; } return $result; } );
5. Отключение комментариев для определённых типов контента
Если вы не хотите ставить отдельный плагин для отключения комментариев, это можно сделать кодом.
/** * Отключаем комментарии для страниц и вложений */ function pt_disable_comments_for_pages_and_attachments() { if ( is_page() || is_attachment() ) { // Полностью отключаем комментарии add_filter( 'comments_open', '__return_false', 20, 2 ); add_filter( 'pings_open', '__return_false', 20, 2 ); } } add_action( 'template_redirect', 'pt_disable_comments_for_pages_and_attachments' );
Такой подход хорошо сочетается с Clearfy Pro: часть вещей (RSS, дублей, защита) можно доверить плагину, а точечные правки под тему и шаблоны реализовать через ProFunctions.
Это обновлённая версия статьи от 26.05.2016 года, доработанная с учётом современных подходов к оптимизации WordPress, использования плагинов ProFunctions и Clearfy Pro, а также актуальных требований к скорости и безопасности. Ниже, под спойлером, вы можете найти первоначальный вариант статьи в исходном виде — он оставлен здесь для истории и сравнения.
Всем привет! В сегодняшней статье я опишу свои стандартные действия по оптимизации исходного html-кода сайта на WordPress. Я не буду рассуждать о пользе или необходимости наличия на сайте каких-либо элементов, например ссылок на pingback, в моей ситуации их просто необходимо удалить. Да и вообще, сколько людей, столько и мнений, но я выскажу свое, а вам решать, что из этого использовать, а что нет.
Чистим содержимое head
В исходном коде страницы можно найти очень много лишнего и ненужного кода именно в этом теге. Чтобы исправить ситуацию нам нужно будет залезть в содержимое файлов header.php и functions.php.

1. Редактируем header.php
Просто находим и удаляем в шаблоне такие строчки:
<link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
2. Удаляем meta name=generator
Чтобы удалить ненужные тэги, добавляем в functions.php следующие строки:
remove_action( 'wp_head', 'wp_generator' );
3. Удаляем link rel=EditURI
remove_action( 'wp_head', 'rsd_link' );
4. Удаляем link rel=wlwmanifest
remove_action( 'wp_head', 'wlwmanifest_link' );
5. Удаляем link rel=shortlink
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
6. Удаляем ссылки на RSS-фиды
Находим и удаляем в functions.php такую строку:
add_theme_support( 'automatic-feed-links' );
И/или добавляем такой код:
remove_action( 'wp_head', 'feed_links' ); remove_action( 'wp_head', 'feed_links_extra' );
Опционально — делаем редирект фидов на главную страницу:
function ny_disable_feed() {
wp_redirect( get_option( 'siteurl' ), 301 );
}
add_action( 'do_feed', 'ny_disable_feed', 1 );
add_action( 'do_feed_rdf', 'ny_disable_feed', 1 );
add_action( 'do_feed_rss', 'ny_disable_feed', 1 );
add_action( 'do_feed_rss2', 'ny_disable_feed', 1 );
add_action( 'do_feed_atom', 'ny_disable_feed', 1 );
7. Удаляем стили .recentcomments a
function ny_remove_recent_comments_style() {
global $wp_widget_factory;
remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) );
}
add_action( 'widgets_init', 'ny_remove_recent_comments_style' );
Чистим заголовки сервера
Если открыть firebug и посмотреть заголовки ответов сервера, то там тоже можно найти мусор, который неплохо бы убрать.
Указанные ниже куски кода вставляем в functions.php.
1. Удаляем Link rel=shortlink
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
2. Удаляем X-Pingback
function ny_remove_x_pingback( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}
add_filter( 'wp_headers', 'ny_remove_x_pingback' );
3. Удаляем X-Powered-By
header_remove( 'x-powered-by' );
Выводы
Итак, мы проделали небольшую часть работы по внутренней оптимизации WordPress сайта. А зачем все это? Во-первых, для SEO. Во-вторых, наводим красоту в исходном коде. Почему бы и нет?

Лариса, спасибо за вопрос и за толчок к обновлению материала 🙂 Да, сейчас я действительно пользуюсь Clearfy Pro и могу подтвердить, что это очень дельный плагин для чистки, оптимизации и частично защиты WordPress‑сайта. Именно ваш комментарий стал тем самым поводом пересмотреть старый подход, протестировать Clearfy Pro на боевых проектах и в итоге полностью переработать эту статью с учётом возможностей этого плагина и связки с ProFunctions.
Подскажите, а пользуетесь clearfy Pro? Говорят дельный плагин в чистке и защите сайта
Я недавно воспользовался рекомендациями по чистке WordPress, представленными на сайте promotiger.ru, и результаты превзошли все мои ожидания. Статья предлагает подробные инструкции по оптимизации исходного кода WordPress-сайта, включая удаление ненужных тегов и ссылок в разделе head, а также чистку заголовков сервера. Эти простые, но эффективные шаги помогли мне не только улучшить SEO-показатели моего сайта, но и сделали его код более аккуратным и понятным. Я рекомендую эту статью всем, кто хочет улучшить производительность своего сайта на WordPress
В более чистом коде видимо
Не понятно, а в чем польза для СЕО?
Хорошая статья. Подскажите хороший материал, но только по joomla. Буду очень благодарен !
Спасибо за статью.Можно узнать А как сделать так чтобы не банали сколько постов нужна в 1 блоге в идеале
Спасибо большое, очень помогло. Значительно увеличилась скорость загрузки сайта, видимо за счет чистки кода.
Спасибо за статью…долг искал как почистить свой портал, не мог найти! Раньше работал на Dle теперь открываю для себя WordPress…обязательно воспользуюсь вашим методом пол чистке
Спасибо, ценная статья.
А подскажите, как правильно удалить ссылку на разработчика шаблона и вордпресс из подвала? В самом файле footer
Привет! Еще добавь :
remove_action(‘wp_head’, ‘index_rel_link’);
remove_action(‘wp_head’, ‘start_post_rel_link’, 10, 0);
remove_action(‘wp_head’, ‘parent_post_rel_link’, 10, 0);
remove_action(‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0);
remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’);
Лучи добра всем =)