Розробка кастомних типів записів WordPress (CPT)

Розробка кастомних типів записів (Custom Post Types) WordPress

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомних типів записів WordPress (CPT)
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1286
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    998

Розробка кастомних типів записів (Custom Post Types) WordPress

Уявіть: клієнт просить розділ «Портфоліо» з фільтром за роками, а стандартні записи не дають ні свого URL, ні метаполів. Ми стикаємося з цим регулярно. WordPress з коробки працює з двома типами контенту — «Записи» та «Сторінки». Коли сайту потрібні Проекти, Вакансії, Нерухомість, Відгуки або Товари, під кожний створюється власний тип записів (CPT). CPT дає окремий розділ у /wp-admin, свої URL, архівні сторінки та повний контроль над структурою даних. Реєстрація CPT з базовими налаштуваннями займає кілька годин; повноцінне налаштування з ЧПУ, кастомними колонками та можливостями пошуку — 1–2 дні. Наш досвід — понад 50 налаштованих CPT для різних проектів, від портфоліо до інтернет-магазинів.

Як реєструвати CPT з правильними налаштуваннями?

Реєстрація починається з хука init. Всередині викликаємо register_post_type з обов'язковими параметрами. Розглянемо приклад для типу «Проекти»:

add_action('init', function () { register_post_type('project', [ 'labels' => [ 'name' => 'Проекты', 'singular_name' => 'Проект', 'add_new' => 'Добавить проект', 'add_new_item' => 'Новый проект', 'edit_item' => 'Редактировать проект', 'new_item' => 'Новый проект', 'view_item' => 'Просмотр проекта', 'search_items' => 'Поиск проектов', 'not_found' => 'Проекты не найдены', 'not_found_in_trash' => 'Корзина пуста', 'menu_name' => 'Проекты', ], 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => ['slug' => 'projects', 'with_front' => false], 'capability_type' => 'post', 'has_archive' => 'projects', 'hierarchical' => false, 'menu_position' => 5, 'menu_icon' => 'dashicons-portfolio', 'supports' => ['title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'], 'show_in_rest' => true, 'rest_base' => 'projects', ]); }); 

has_archive => 'projects' створює сторінку архіву за адресою /projects/ — туди потрапляють всі записи типу. show_in_rest => true робить тип доступним через REST API та в редакторі Gutenberg. Після реєстрації обов'язково оновіть правила ЧПУ: в адмінці «Налаштування → Постійні посилання» натисніть «Зберегти» або виконайте flush_rewrite_rules() при активації.

Кастомні колонки у списку записів та сортування

За замовчуванням список проектів показує лише заголовок та дату. Додамо колонки «Клієнт», «Рік» та «На головній» — всі вони сортовані. Ось компактний блок коду, що включає реєстрацію колонок, виведення даних та сортування:

// Регистрируем колонки и выводим данные add_filter('manage_project_posts_columns', function (array $columns): array { $new = []; foreach ($columns as $key => $title) { $new[$key] = $title; if ($key === 'title') { $new['client'] = 'Клиент'; $new['year'] = 'Год'; $new['featured'] = 'На главной'; } } unset($new['comments']); return $new; }); add_action('manage_project_posts_custom_column', function (string $column, int $post_id): void { switch ($column) { case 'client': echo esc_html(get_post_meta($post_id, '_project_client', true) ?: '—'); break; case 'year': echo esc_html(get_post_meta($post_id, '_project_year', true) ?: '—'); break; case 'featured': $is_featured = get_post_meta($post_id, '_project_featured', true); echo $is_featured ? '⭐' : '—'; break; } }, 10, 2); add_filter('manage_edit-project_sortable_columns', function (array $columns): array { $columns['year'] = 'year'; return $columns; }); add_action('pre_get_posts', function (WP_Query $query): void { if (!is_admin() || !$query->is_main_query()) return; if ($query->get('orderby') === 'year') { $query->set('meta_key', '_project_year'); $query->set('orderby', 'meta_value_num'); } }); 

Включення CPT у пошук WordPress та фільтр за таксономією

За замовчуванням стандартний пошук не включає кастомні CPT. Виправляємо це через pre_get_posts:

add_action('pre_get_posts', function (WP_Query $query): void { if ($query->is_search() && !is_admin() && $query->is_main_query()) { $post_types = $query->get('post_type') ?: ['post']; if (!is_array($post_types)) { $post_types = [$post_types]; } $query->set('post_type', array_merge($post_types, ['project', 'vacancy'])); } }); 

А для фільтрації списку за таксономією (наприклад, категорія проекту) додаємо випадаючий список:

add_action('restrict_manage_posts', function (string $post_type): void { if ($post_type !== 'project') return; $taxonomy = get_taxonomy('project_category'); wp_dropdown_categories([ 'taxonomy' => 'project_category', 'name' => 'project_category', 'show_option_all' => 'Все категории', 'selected' => $_GET['project_category'] ?? 0, 'value_field' => 'slug', 'hierarchical' => true, ]); }); 

Порівняння: CPT vs таксономія vs кастомне поле

Часта помилка — використовувати CPT там, де достатньо таксономії або поля. Таблиця нижче допоможе вибрати правильний інструмент:

Сутність Коли використовувати Приклад
Custom Post Type Потрібна окрема сторінка, архів, редактор контенту Проект, відгук, вакансія
Таксономія Потрібне групування або фільтрація записів Категорія проекту, тег послуги
Кастомне поле Зберігаємо атрибут існуючого запису Ціна товару, рік проекту, адреса офісу

CPT краще за таксономію для змістовних сутностей — він дає окремий URL, редактор та повний контроль. Використання таксономії замість CPT — це втрата SEO-потенціалу та обмеження контенту.

Які шаблони потрібні для коректного відображення CPT?

WordPress автоматично шукає шаблони у визначеному порядку. Для типу project пріоритет такий:

Пріоритет Шаблон Призначення
1 single-project.php Окремий запис
2 single.php Фолбек для записів
3 archive-project.php Архів (список)
4 archive.php Фолбек для архівів

Якщо потрібного шаблону немає, WordPress падає на index.php. Створення single-project.php та archive-project.php — базова практика для будь-якого CPT.

Пов'язані записи між різними CPT

Стандартний спосіб пов'язати два CPT — зберігати ID пов'язаних записів у post meta. Наприклад, прив'язуємо кейси до проекту:

// Сохранение связей update_post_meta($project_id, '_related_cases', array_map('absint', $case_ids)); // Получение связанных кейсов $case_ids = get_post_meta($project_id, '_related_cases', true); if (!empty($case_ids)) { $cases = get_posts([ 'post_type' => 'case', 'post__in' => $case_ids, 'orderby' => 'post__in', 'posts_per_page' => -1, ]); } 

Для двосторонніх зв'язків (багато-до-багатьох) використовуйте плагін Posts 2 Posts або створіть проміжну таблицю.

Що входить у налаштування CPT під ключ

Наш досвід — понад 5 років розробки на WordPress, понад 50 налаштованих CPT для портфоліо, інтернет-магазинів та каталогів. До послуги входить:

  • Реєстрація CPT з повним набором параметрів (ЧПУ, архів, іконка, колонки);
  • Кастомні колонки з сортуванням та фільтрацією;
  • Інтеграція з пошуком та REST API;
  • Створення шаблонів single-{cpt}.php та archive-{cpt}.php;
  • Документація та передача доступів;
  • Навчання контент-менеджерів.

Гарантуємо, що всі CPT будуть коректно працювати з Gutenberg та W3C-валідатором. Зв'яжіться, щоб обговорити ваш проект — оцінимо задачу за один робочий день. Отримайте консультацію: ми допоможемо вибрати оптимальну архітектуру та реалізуємо CPT швидше, ніж ви напишете spec.

Чому варто довірити налаштування CPT професіоналам?

Некоректна реєстрація CPT призводить до помилок 404, неробочого пошуку та падіння продуктивності. Ми використовуємо перевірені патерни: registration_hook для скидання правил, кастомні колонки без зайвих запитів, правильні capability_type. Ваш сайт не втратить у швидкості — гарантуємо Core Web Vitals на рівні зеленої зони.

Для глибокого розуміння механізму реєстрації зверніться до офіційної документації: register_post_type. Наші спеціалісти завжди готові проконсультувати та підібрати рішення під ваш проект.