
📄 Как вставить HTML-файл в страницу WordPress: плагин Include Me
Сверстали форму обратной связи в отдельном .html, написали скрипт отчёта на PHP, а WordPress-редактор режет код при каждом сохранении? Знакомая боль для всех, кто выходит за рамки стандартного блочного конструктора.
Include Me решает эту задачу одной строкой шорткода: подключает внешний HTML/PHP-файл или содержимое другой записи прямо в тело поста. Плагин живёт в каталоге WordPress.org с 4 000+ активных установок, рейтингом 4,8 и обновлением под WP 6.9.4. Автор, Stefano Lissa, создатель Newsletter и Hyper Cache.
Ниже, полный разбор: от установки до передачи переменных в PHP-скрипты и безопасного iframe-режима.
💡 Быстрый обзор:
- Установите Include Me из каталога WordPress.org (Plugins → Add New, поиск «Include Me»).
- Загрузите целевой HTML/PHP-файл в папку
/wp-content/include-me/на сервере. - Вставьте шорткод
[includeme file="ваш-файл.html"]в нужном месте поста или страницы. - Для PHP-файлов: плагин выполнит скрипт и выведет результат. Для HTML, вставит как есть.
- Альтернативно подключите другую запись WordPress через
post_idили внешний URL через iframe-синтаксис.
Что такое Include Me и когда он нужен
Include Me, легковесный плагин (всего несколько строк кода, по словам автора), который решает конкретную задачу: вставку внешнего файла в тело поста или страницы WordPress через шорткод.
Когда это нужно на практике:
- Формы и калькуляторы. Вы написали HTML-форму с CSS и JS, редактор блоков искажает разметку при каждом переключении между визуальным и текстовым режимом. Include Me вставляет файл байт-в-байт, ничего не трогая.
- PHP-отчёты. Скрипт собирает данные из базы, формирует таблицу и выводит HTML. Include Me выполняет PHP и показывает результат внутри поста, без правки темы.
- Общие блоки. Один и тот же файл (ценник, дисклеймер, контактный блок) нужно показывать на десятке страниц. Меняете файл, обновляется везде автоматически.
- Контент чужой записи. Подключили текст другой страницы через
post_id, и он синхронизирован: редактируете в одном месте, отображается во всех.
Главное преимущество перед кастомной страницей темы: при смене темы ваши файлы остаются на месте. Тема меняется, контент живёт независимо.
Установка и первый запуск
Установка стандартная, через админку WordPress:
- Plugins → Add New.
- В строке поиска наберите «Include Me».
- Найдите плагин авторства Stefano Lissa, нажмите Install Now → Activate.
После активации плагин готов к работе, никаких экранов настроек нет. Вся «настройка» делается через синтаксис шорткода.
Путь к файлам по умолчанию: /wp-content/include-me/. Именно в эту папку загружайте файлы, которые планируете подключать. Если нужна другая директория, добавьте в wp-config.php:
1 define('INCLUDE_ME_DIR', '/путь/к/вашей/папке');
Хотите подключать файлы из любого места сервера, поставьте звёздочку (но безопаснее ограничить одной папкой):
1 define('INCLUDE_ME_DIR', '*');
Важное ограничение безопасности: начиная с версии 1.3.0 шорткод [includeme] выполняется только в постах, принадлежащих администратору. Файлы по умолчанию ищутся внутри корневой папки сайта (ABSPATH и ниже). Это не баг, а защита: Include Me выполняет PHP-код, и давать такую возможность кому попало нельзя.
Базовый синтаксис: подключаем HTML и PHP-файлы

Основной шорткод, [includeme file="имя-файла"]. Работает в любом посте, странице или виджете (через do_shortcode).
Пример 1: HTML-файл. Вы подготовили price-table.html с вёрсткой цен и стилями. Загрузили в /wp-content/include-me/. В посте пишете:
1 [includeme file="price-table.html"]
Плагин читает файл и вставляет его содержимое ровно в то место, где стоит шорткод. Тег <style> внутри файла, работает. Инлайн-JS, работает. Никакого «очищения» разметки.
Пример 2: PHP-скрипт. Файл report.php делает SELECT из базы и выводит таблицу. Расширение .php, триггер для Include Me: плагин не просто читает файл, а выполняет его через include. Вывод скрипта (echo/print) попадает в пост:
1 [includeme file="report.php"]
Пример 3: Относительный путь. Путь без слеша в начале (file="myfolder/data.html") отсчитывается от корня сайта (ABSPATH). Абсолютный путь (file="/var/www/external/widget.html"), от корня файловой системы сервера. В большинстве случаев используют относительный путь к файлу внутри /wp-content/include-me/.
Подключение другой записи или страницы через post_id
Разработчики Include Me добавили синтаксис для подтягивания контента существующей записи WordPress. Шорткод:
1 [includeme post_id="42"]
Где 42, числовой ID нужного поста или страницы. Как узнать ID: в админке наведите курсор на ссылку «Edit» нужной записи, в статусной строке браузера увидите post=42.
Этот приём удобен для юридических страниц. Политика конфиденциальности или условия использования часто дублируются, один экземпляр в «родительской» странице, на остальных, Include Me с post_id. Юрист правит текст в одном месте, обновляется везде.
Обратите внимание: подтягивается только контент записи, без заголовка. Если нужен и заголовок, придётся дублировать его внутри контента или использовать [includeme file="..."] с PHP-скриптом, который дёрнет get_post().
Iframe-режим: встраиваем внешний URL
Третий синтаксис генерирует <iframe> вместо прямого включения:
1 [includeme src="https://example.com/widget"]
Любые дополнительные атрибуты передаются в <iframe> как HTML-атрибуты:
1 [includeme src="https://example.com/widget" frameborder="0" width="600" height="450"]
Результат, полноценный iframe с заданными размерами. Это альтернатива прямому включению для случаев, когда:
- Нужно показать внешнюю страницу как «окно» внутри поста.
- Подключаемый контент должен жить в изолированном контексте (свои CSS/JS, не конфликтующие с темой).
- Требуется вставить интерактивный виджет (калькулятор, карта), который не должен выполняться в контексте WordPress.
Ограничение: iframe-режим не выполняет PHP, он просто показывает URL в рамке. Для серверного кода используйте file="...".
Передача переменных в PHP-скрипты
Самая мощная возможность Include Me, проброс параметров из шорткода в подключаемый PHP-файл. В шорткоде пишете:
1 [includeme file="greeting.php" name="Алексей" plan="Pro"]
Внутри greeting.php получаете доступ к атрибутам через глобальный массив $attrs:
1 <?php 2 $user_name = $attrs['name'] ?? 'Гость'; 3 $user_plan = $attrs['plan'] ?? 'Free'; 4 5 echo "<p>Здравствуйте, {$user_name}! Ваш тариф: {$user_plan}.</p>";
Это превращает Include Me в мини-шаблонизатор. Один и тот же PHP-файл генерирует разный вывод в зависимости от атрибутов шорткода. Практичные сценарии:
- Калькулятор цены. Один скрипт
calc.phpполучаетbase_priceиdiscountиз шорткода, на разных страницах показывает разные расчёты. - Персонализированный блок.
cta.phpпринимаетheadingиbutton_text, в каждом посте свой заголовок и кнопка, HTML-каркас общий. - Дашборд для клиента.
client-stats.phpполучаетclient_idи выводит данные конкретного клиента из внешней CRM.
Чего Include Me не делает: ограничения
Плагин решает узкую задачу и не пытается быть комбайном. Минусы, которые стоит знать до установки:
- Только для администраторов. Шорткод работает лишь в постах, автором которых указан администратор. Авторы и редакторы использовать Include Me не могут, это осознанное ограничение безопасности (версия 1.2.2+).
- Нет визуального редактора. Никакого UI в админке: плагин не добавляет metabox для выбора файла. Всё руками через шорткод.
- Расширение
.phpобязательно для выполнения. Файлscript.incс PHP-кодом НЕ выполнится, плагин вставит его как текст. Переименуйте вscript.php. - Нет кеширования. Каждый вызов шорткода читает файл с диска или выполняет PHP заново. Для высоконагруженных страниц с тяжёлыми скриптами, кешируйте вывод самостоятельно (через Transients API или плагин кеширования уровня страницы).
⁉️🤔 Частые вопросы
Работает ли Include Me с современными версиями WordPress?
Да, плагин протестирован вплоть до WordPress 6.9.4 и требует версии не ниже 6.1. Последнее обновление (1.3.7) вышло в феврале 2026 года, автор поддерживает совместимость с каждым мажорным релизом WP.
Безопасно ли подключать PHP-файлы через шорткод?
С версии 1.2.2 плагин выполняет PHP-файлы только из папки внутри корня сайта и только для постов администратора. Это исключает запуск произвольного кода через XSS или подставу URL. Дополнительно ограничьте папку через
define('INCLUDE_ME_DIR', '...'), не используйте'*'без крайней необходимости.
Чем Include Me отличается от плагина Insert Pages?
Insert Pages фокусируется на вставке контента других записей, у него богатый набор опций форматирования и обёрток. Include Me проще и заточен под работу с файлами: HTML, PHP, TXT. Если задача, только подтянуть другую запись, Insert Pages удобнее. Если нужны PHP-скрипты и внешние файлы, Include Me.
Можно ли вставить тот же файл на десять страниц?
Да, именно для этого плагин и создан. Один файл в
/wp-content/include-me/подключается через одинаковый шорткод на любом количестве страниц. Изменили файл, контент обновился везде мгновенно, без пересохранения каждого поста.
Почему мой PHP-файл выводит пустоту?
Три частые причины: (1) файл не в папке
INCLUDE_ME_DIR, и путь указан неверно; (2) в PHP-коде фатальная ошибка, проверьтеWP_DEBUGи логи сервера; (3) файл сохранён с расширением.htmlили.incвместо.php, Include Me выполняет только.php.
Что делать, если плагин перестанет обновляться?
Include Me состоит всего из нескольких строк кода (по словам автора) и не зависит от внешних сервисов. Даже без обновлений он продолжит работать годами, его логика не привязана к WP REST API, блокам или Gutenberg-специфике. Базовый шорткод-механизм WordPress не менялся с версии 2.5.
Что делать, если нужно больше: альтернативы и следующий шаг
Если Include Me не закрывает вашу задачу, вот два направления для расширения:
- Вставка записей с форматированием: плагин Insert Pages подтягивает контент других постов с гибкими настройками отображения (заголовок, excerpt, произвольная обёртка).
- Полноценный PHP-движок: плагин WPCode (бывший Insert Headers and Footers) позволяет вставлять PHP-сниппеты глобально или по условиям, с подсветкой синтаксиса и контролем ошибок.
Начните с Include Me: для типовой задачи «вставить внешний файл в пост» его хватает с запасом. А если вы уже использовали этот плагин или решали похожую задачу иначе, расскажите в комментариях, какой инструмент выбрали.



