Гид по технологиям

Как создать пользовательский тип записи в WordPress

7 min read WordPress Обновлено 01 Dec 2025
Создать пользовательский тип записи в WordPress
Создать пользовательский тип записи в WordPress

Оглавление

  • Как создать пользовательский тип записи в WordPress
  • Как добавить фрагменты кода в WordPress с помощью WPCode
  • Как отобразить пользовательский тип записи в меню и на сайте
  • Когда не нужен пользовательский тип записи и альтернативы
  • Контроль качества, тесты и критерии приёмки
  • Чеклист ролей: разработчик, админ, контент-менеджер
  • Безопасность, приватность и локализация
  • Краткий глоссарий и часто задаваемые вопросы

WordPress: пример интерфейса для пользовательских типов записей

В большинстве проектов стандартных типов записей WordPress (Записи, Страницы) достаточно. Но если контент структуры не вписывается в «посты» или «страницы» — стоит создать CPT. CPT помогает организовать контент, назначить отдельные шаблоны, таксономии и права доступа.

Как создать пользовательский тип записи в WordPress

Ниже — рабочий путь без ручного набора полного кода: используем генератор GenerateWP и вставляем код через сниппет-плагин.

Вкратце: генерация → вставка в WP → проверка меню и пермалинков → тесты прав доступа и отображения.

Шаг 1. Сгенерируйте код в GenerateWP

  1. Перейдите на страницу Post Type Generator сервиса GenerateWP и откройте вкладку General.

Интерфейс генератора Post Type на GenerateWP

  1. Во вкладке General заполните основные поля:
    • Function Name: имя функции регистрации CPT (латиницей, уникально).
    • Child Theme: отмечайте, если код должен работать с дочерней темой.
    • Text Domain: домен переводов для i18n.

Параметры General в GenerateWP

  1. Нажимайте «Update Code» после каждого блока настроек — изменения применяются к генерируемому фрагменту.

Кнопка обновления кода в GenerateWP

  1. Во вкладке Post Type задайте ключ и метаданные CPT:
    • Post Type Key: короткий ключ (латиница, без пробелов).
    • Description: краткое описание назначения.
    • Singular Name и Plural Name: названия для UI.
    • Link to Taxonomies: привязки к таксономиям (категории, метки или свои).
    • Hierarchical: включайте, если нужен иерархический тип (как страницы).

Настройки Post Type в GenerateWP

  1. Во вкладке Labels вы можете настроить, как пункты будут называться в админке.

Настройка меток в GenerateWP

  1. В Options выбираются поддерживаемые поля (поддержка заголовков, редактора, миниатюр), экспорт, архивы и поведение в поиске.

Опции Post Type в GenerateWP

  1. Visibility отвечает за видимость CPT в админке и REST API.

Настройки видимости в GenerateWP

  1. Permalinks: при необходимости задайте кастомный slug и включите пагинацию для архива.

Настройки пермалинков в GenerateWP

  1. Capabilities: управляют тем, какие роли и какие возможности имеют доступ к CPT. Здесь важно корректно разграничить права между администраторами, редакторами и автором.

Управление правами доступа в GenerateWP

  1. Скопируйте сгенерированный фрагмент кода.

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

Как добавить фрагменты кода в WordPress с помощью WPCode

Мы используем WPCode, потому что он прост и безопасен для управления PHP-фрагментами.

  1. В админке WordPress установите и активируйте плагин WPCode.
  2. В меню появится пункт Code Snippets.
  3. Наведите на Code Snippets и нажмите + Add Snippet.

Меню Code Snippets в WordPress

  1. Нажмите Use snippet под Add Your Custom Code (New Snippet).

Добавление нового сниппета в WPCode

  1. Включите переключатель Active, задайте название сниппета, выберите PHP Snippet как тип кода и вставьте сгенерированный код в поле.

Создание PHP-сниппета в WPCode

  1. Нажмите Save Snippet. После активации CPT появится в левой боковой панели админки.

Новый пункт меню CPT в админке WordPress

Совет: если сайт в продакшене, сначала протестируйте сниппет на staging-копии.

Как отобразить пользовательский тип записи в меню и на сайте

Если вы не видите ссылку на CPT в меню сайта — добавьте её вручную.

  1. В админке наведите на Внешний вид, затем Меню.

Раздел Внешний вид → Меню в WordPress

  1. Создайте новый пункт меню или редактируйте существующее меню.
  2. В разделе Добавить пункты меню выберите Пользовательские ссылки и вставьте URL-слуг (например /books), укажите текст ссылки и нажмите Добавить в меню.

Добавление пользовательской ссылки в меню WordPress

  1. Выберите место отображения меню и сохраните.

Выбор расположения меню в WordPress

После сохранения новый пункт меню появится на указанной позиции.

Примечание: если CPT настроен с поддержкой REST API и archive=true, можно вывести архивную страницу через шаблоны темы или через кастомный блок/шорткод.

Когда не нужен пользовательский тип записи и альтернативы

CPT — мощный инструмент, но он не всегда необходим. Рассмотрите альтернативы:

  • Таксономии или метки: если разница между элементами минимальна, достаточно таксономии.
  • Пользовательские поля (ACF): если нужно просто добавить поля к существующим записям.
  • Формы и кастомные таблицы: для очень специфичных данных (платежи, логи) лучше отдельная таблица и API.
  • Плагины генерации CPT: Custom Post Type UI и Pods позволяют управлять CPT без кода.

Контрпример: если вам нужно просто пометить публикации меткой «Рецепт», не стоит создавать новый CPT — используйте таксономию.

Контроль качества, тесты и критерии приёмки

Перед выпуском проверьте следующие пункты:

  • В админке отображается меню CPT и его интерфейс рабочий.
  • Страница архива выводится и доступна по ожидаемому URL.
  • Отдельная запись открывается и использует нужный шаблон (single-{post_type}.php или шаблон темы).
  • Права доступа: пользователи с ролью X могут создавать/редактировать/удалять, роль Y — нет.
  • Пермалинки правильные и не конфликтуют с существующими URL.
  • Экспорт/импорт: записи CPT корректно экспортируются через стандартный инструмент экспорта WordPress.
  • SEO: архив и отдельные записи индексируются/нетиндексируются в соответствии с требованиями.

Критерии приёмки

  • CPT успешно регистрируется и отображается в админке.
  • CRUD (создание, чтение, обновление, удаление) работает для назначенных ролей.
  • Шаблоны и стили корректно применяются в теме.
  • Нет конфликтов пермалинков и дубликатов роутов.

Чеклист ролей

Разделённый по обязанностям чеклист поможет не пропустить важное.

Роль — разработчик

  • Создать CPT как часть плагина сайта или в сниппете.
  • Обеспечить i18n (text domain) и корректные labels.
  • Зарегистрировать нужные таксономии и мета-поля.
  • Настроить capabilities и map_meta_cap, если нужна тонкая настройка прав.
  • Сделать unit/integration тесты (если CI).

Роль — администратор сайта

  • Установить и активировать сниппет/плагин.
  • Проверить видимость CPT и права доступа.
  • Добавить пункт меню и настроить местоположение.
  • Протестировать экспорт/импорт и резервное копирование.

Роль — контент-менеджер

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

Безопасность, приватность и локализация

Безопасность

  • Никогда не вставляйте ненадёжный PHP-код. Проверяйте код, полученный из внешних сервисов.
  • Ограничьте возможности по созданию/удалению записей через capabilities.
  • Включайте nonce и проверку прав там, где CPT взаимодействует с фронтендом (AJAX, формы).

Приватность и GDPR

  • Если CPT хранит персональные данные (контакты, заявки) — убедитесь, что у вас есть политика хранения данных.
  • Реализуйте экспорт/удаление персональных данных согласно требованиям GDPR и местного законодательства.

Локализация

  • Используйте функции перевода __(), _e(), _x() с правильным text domain.
  • Для русскоязычных сайтов проверьте падежи в метках и подсказках (Singular/Plural), чтобы интерфейс был читаем.

Тестовые сценарии и приёмо-сдаточные кейсы

  • Создать запись CPT с минимальными полями — ожидание: запись сохраняется и отображается.
  • Создать запись с расширенными метаполями — ожидание: все поля валидируются и сохраняются.
  • Попытка создания записи пользователем без прав — ожидание: операция запрещена.
  • Проверка пермалинков: перейти по URL архива и к отдельной записи — ожидание: 200 OK.
  • SEO-поведение: проверить meta robots, canonical при необходимости.

Ментальные модели и рекомендации по архитектуре

  • Модель «контент как ресурс»: думайте о каждом CPT как о REST-ресурсе с собственными полями и правилами доступа.
  • «Разделение обязанностей»: данные, отображение и права отдельно — CPT для структуры данных, шаблоны темы для представления.
  • «Минимализм в CPT»: создавайте CPT только когда семантика контента отличается принципиально.

Альтернативные подходы

  • Custom Post Type UI: интерфейс для создания и управления CPT без кода.
  • Pods: расширенный набор для CPT с дисплеями, связями и кастомными полями.
  • ACF (Advanced Custom Fields): добавить поля к существующим записям вместо создания нового CPT.

Краткий глоссарий

  • CPT: пользовательский тип записи (Custom Post Type).
  • Slug: часть URL для записи или архива (напр. /books).
  • Taxonomy: способ группировки контента (категории, метки или свои таксономии).
  • Capabilities: права доступа ролей к CRUD-операциям.

Часто задаваемые вопросы

Как просмотреть доступные типы записей в теме?

Используйте плагин Find My Custom Post Types для визуального просмотра или функцию get_post_types() для получения списка зарегистрированных типов.

Сколько пользовательских типов записей можно создать?

Технически — сколько угодно. Практически стоит ограничивать количество для поддержки удобства администрации и производительности.

Есть ли плагин для генерации пользовательских типов записей?

Да. Custom Post Type UI — популярный бесплатный вариант. Также рекомендуются Pods и ACF (в связке с CPT).

Image credit: Pexels. All screenshots by Natalie dela Vega.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сделать PNG прозрачным — полное руководство
Графика

Как сделать PNG прозрачным — полное руководство

Исправить ошибку подключения Netflix в Windows 10
Техподдержка

Исправить ошибку подключения Netflix в Windows 10

Google Maps на экране блокировки iPhone
iPhone

Google Maps на экране блокировки iPhone

Анонимный просмотр Instagram Stories
Социальные сети

Анонимный просмотр Instagram Stories

Запуск PowerShell через .bat: быстро и безопасно
DevOps

Запуск PowerShell через .bat: быстро и безопасно

Отключить окно сохранения пароля в Chrome
Инструкции

Отключить окно сохранения пароля в Chrome