Отметим: когда сайт на WordPress разрастается до 500+ страниц, управление контентом превращается в хаос: редакторы путаются в стандартных полях, типы записей не соответствуют задачам, а производительность WordPress падает — TTFB достигает 3 секунд, а LCP — 4 секунд. При интеграции с CRM через REST API возникают N+1 запросы, которые мы устраняем с помощью WPGraphQL и явной выборки данных. Мы решаем эту проблему комплексной интеграцией WordPress: настраиваем кастомные типы записей через CPT, ACF-поля для структурирования данных, разграничиваем роли пользователей и внедряем кэширование Redis для снижения времени ответа до 120 мс. Это сокращает стоимость хостинга на 40% (экономия $40–80 в месяц) и ускоряет разработку фронтенда в 2 раза при headless-подходе по сравнению с классической темой. Опыт более 5 лет и 100+ проектов гарантируют, что вы получите готовую к работе систему без скрытых сюрпризов.
Варианты интеграции
| Метод | Когда подходит | Фронтенд |
|---|---|---|
| Полный WordPress | Весь сайт на WordPress | PHP-темы |
| Headless (REST/GraphQL) | Отдельный фронтенд (React, Vue) | Ваш стек |
| WordPress в подпапке | Блог/новости на поддомене | Два приложения |
Полный WordPress — классика: темы, плагины, всё в одном. Headless открывает путь к максимальной гибкости: WordPress отдаёт контент через REST API или WPGraphQL, а фронтенд живёт на React или Next.js. WordPress в подпапке удобен, когда основной сайт на другом стеке, а блогу нужна знакомая админка.
Проблемы, которые мы решаем
Хаос в типах контента
Стандартные "Записи" и "Страницы" не покрывают 70% потребностей бизнеса. Мы создаём Custom Post Types для портфолио, отзывов, акций — с уникальными полями и таксономиями. Например, для интернет-магазина регистрируем CPT "Товары" с полями цена, артикул, характеристики. Это структурирует данные и сокращает время поиска информации на 30%.
Медленная загрузка страниц
WordPress без кэширования выдаёт TTFB выше 2 секунд. Мы подключаем Redis Object Cache и настраиваем Nginx page cache, чтобы облегчить нагрузку на базу и ускорить отдачу статики. После наших настроек Core Web Vitals приходят в норму: LCP падает на 40% (с 4 до 1,2 с), CLS стремится к нулю, а TTFB снижается до 120 мс. Redis кэширование в 5 раз быстрее стандартного Object Cache, а время отклика базы данных сокращается на 60%. Это снижает ежемесячные расходы на хостинг на $40–80.
Небезопасная конфигурация
Ошибки в wp-config.php или открытый доступ к файлам — частая брешь. Мы запрещаем редактирование через админку, генерируем уникальные соли и ограничиваем автообновления. Для production исключаем хранение паролей в коде.
Как мы это делаем
Развернём кейс: клиент — агентство с портфолио проектов. Нужно, чтобы менеджеры добавляли кейсы без помощи разработчика. Мы регистрируем CPT portfolio с поддержкой REST API, через ACF добавляем поля "Клиент", "URL", "Технологии". Затем ограничиваем права: менеджер может редактировать только свои записи, публикует их после одобрения редактора. Всё это — без плагинов, кодом в functions.php.
Как настроить пользовательские типы записей под задачи сайта?
- Спроектируйте структуру. Определите, какие типы записей нужны (портфолио, вакансии, члены команды). Продумайте таксономии и мета-поля.
- Зарегистрируйте CPT. Добавьте код в functions.php или вынесите в отдельный плагин — так проще управлять при обновлениях темы.
- Добавьте ACF-поля. Программно или через интерфейс. Мы предпочитаем код — он версионируется и не теряется при миграциях.
- Выведите в админке. Настройте колонки, фильтры и быстрые правки для удобства редакторов.
Пример регистрации CPT в functions.php
add_action('init', function () { register_post_type('portfolio', [ 'labels' => [ 'name' => 'Портфолио', 'singular_name' => 'Проект', 'add_new_item' => 'Добавить проект', ], 'public' => true, 'has_archive' => true, 'show_in_rest' => true, 'supports' => ['title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'], 'menu_icon' => 'dashicons-portfolio', 'rewrite' => ['slug' => 'portfolio'], ]); }); Почему важно разграничить права доступа?
Отметим: когда над сайтом работает несколько человек, стандартная роль «Редактор» даёт слишком много прав. Мы создаём кастомные роли: например, «Редактор новостей» может добавлять и редактировать записи, но публикует их только после проверки администратором. Роли прописываем в коде — это защищает от случайных изменений через плагины и упрощает перенос между средами. Это увеличивает скорость публикации контента на 25%.
add_role('news_editor', 'Редактор новостей', [ 'read' => true, 'edit_posts' => true, 'publish_posts'=> false, 'delete_posts' => false, ]); Типичные ошибки и их решения
| Ошибка | Последствия | Наше решение |
|---|---|---|
| Использование плагинов для CPT | Конфликты, потеря данных при обновлении | Регистрация CPT кодом в functions.php |
| Отсутствие кэширования | TTFB >3 с, низкий балл Core Web Vitals | Внедрение Redis + Nginx page cache |
| Неправильные права доступа | Редакторы могут ломать сайт | Кастомные роли с ограничением публикации |
Процесс работы
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика | 2–4 часа | Документ с требованиями и карта контента |
| Проектирование | 4–8 часов | Схема CPT, таксономий, ролей |
| Реализация | 8–16 часов | Рабочая конфигурация с кодом |
| Тестирование | 4–8 часов | Проверка всех сценариев |
| Деплой | 2–4 часа | Запуск с CI/CD и мониторингом |
Сроки и что входит
Базовая настройка — 1–1,5 рабочих дня. Включает: установку WP, конфигурацию безопасности, регистрацию CPT, ACF-поля, роли пользователей. Кэширование Redis и Nginx — 3–4 часа. Интеграция CI/CD — 4–6 часов.
- Документация по структуре CPT и полям
- Файлы миграций (если используете WP CLI)
- Обучение редакторов (1 час онлайн)
- Две недели поддержки после деплоя
Свяжитесь с нами — оценим ваш проект за один рабочий день. Получите коммерческое предложение с учётом ваших задач. Закажите аудит WordPress-сайта, если столкнулись с описанными проблемами. Напишите нам — получите консультацию по интеграции WordPress.
Custom Post Types — основа для регистрации CPT в WordPress Codex.







