Главная/WordPress Fullstack/Блупринты/Кастомные темы/Разработка каталога на CPT, таксономиях и AJAX-фильтрации
К карточкам раздела «Кастомные темы»
Кастомные темы(ТЗ 19 из 54)
ТЗ: Разработка каталога на CPT, таксономиях и AJAX-фильтрации
Кастомные темы7 шагов • +35 XP

ТЗ: Разработка каталога на CPT, таксономиях и AJAX-фильтрации

Разработка темы-каталога с кастомным типом записей (CPT), многоуровневыми таксономиями, шаблонами архива и карточки, модификацией запроса pre_get_posts и живой AJAX-фильтрацией.

~14 ч работыУровень: MiddlePHP 8.3/8.4register_post_typeregister_taxonomypre_get_postsarchive-{cpt}.phpsingle-{cpt}.phpAJAX / Fetch APISchema.org Breadcrumbs
+5 XP за шаг
Выполнено 0 из 7 шагов (0%)
Трудозатраты~14 рабочих часов
Фриланс вилка~$630 – $1,050 (€560 – €980)
Оценка веб-студии~$1,330 – $2,240 (€1260 – €2100)

ТЗ заказчика (исходный бриф):

«Нам нужен сайт-каталог оборудования и спецтехники. В админке должен быть отдельный раздел с товарами/объектами, свои категории и бренды, страница каталога с фильтром по параметрам без перезагрузки страницы и детальная карточка объекта с техническими характеристиками.»
Ключевые требования:
  • •Регистрация кастомного типа записи equipment с поддержкой ЧПУ /catalog/%equipment%/
  • •Иерархическая таксономия equipment_cat (категории) и плоская equipment_brand (производители)
  • •Шаблоны archive-equipment.php, taxonomy-equipment_cat.php и single-equipment.php
  • •Быстрый AJAX-фильтр по категориям и цене без перезагрузки страницы
  • •Кастомные хлебные крошки с микроразметкой Schema.org BreadcrumbList
Ограничения проекта:
  • •WordPress 6.7+, PHP 8.3+
  • •Запрет на использование плагинов интернет-магазинов (WooCommerce не нужен, только витрина-каталог)
  • •Все ЧПУ должны формироваться нативно через Rewrite API
Критерии приёмки (KPI):
  • Время ответа AJAX-фильтра < 200 мс
  • 0 мусорных SQL-запросов (чистый pre_get_posts без query_posts)
  • Валидная разметка Product / ItemList для поисковых систем

Пошаговое практическое руководство по ТЗ

Подробный разбор архитектуры, код реализации и советы эксперта по каждому этапу:

1
Этап 1 из 7

Регистрация CPT через register_post_type с поддержкой ЧПУ

~40 минСредний

Практическое руководство:

В файле inc/cpt.php зарегистрируйте тип записи equipment на хуке init. Настройте аргументы: public => true, has_archive => "catalog", rewrite => ["slug" => "catalog"], supports => ["title", "editor", "thumbnail", "excerpt"]. На хуке after_switch_theme добавьте сброс правил ЧПУ.

План и контрольные точки реализации:
1Зарегистрировать CPT на хуке init
2Задать ЧПУ has_archive => "catalog"
3Включить show_in_rest => true для поддержки Gutenberg и REST API
4Настроить однократный сброс ЧПУ на after_switch_theme
Важные технические нюансы и подводные камни:

Никогда не вызывайте flush_rewrite_rules() напрямую внутри хука init — это приводит к тяжелой перезаписи таблицы wp_options при каждом запросе к сайту.

Ожидаемый артефакт этапа:

Новый раздел "Каталог" в админке с корректным ЧПУ /catalog/.

PHP
<?php
// inc/cpt.php - Регистрация типа записи оборудования
add_action('init', function (): void {
    $labels = [
        'name'               => 'Оборудование',
        'singular_name'      => 'Оборудование',
        'menu_name'          => 'Каталог',
        'add_new'            => 'Добавить позицию',
        'add_new_item'       => 'Добавление позиции оборудования',
        'edit_item'          => 'Редактировать позицию',
        'all_items'          => 'Все позиции',
        'search_items'       => 'Поиск по каталогу',
    ];

    register_post_type('equipment', [
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => 'catalog',
        'rewrite'            => ['slug' => 'catalog', 'with_front' => false],
        'menu_icon'          => 'dashicons-portfolio',
        'supports'           => ['title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'],
        'show_in_rest'       => true,
    ]);
});

// Однократный сброс rewrite-правил при активации темы
add_action('after_switch_theme', function (): void {
    flush_rewrite_rules();
});
2
Этап 2 из 7

Регистрация таксономий: Категории и Бренды

~35 минСредний
3
Этап 3 из 7

Модификация главного запроса через хук pre_get_posts

~30 минСредний
4
Этап 4 из 7

Разработка шаблона архива каталога archive-equipment.php

~45 минСредний
5
Этап 5 из 7

Реализация живой AJAX-фильтрации через Fetch API и Nonce

~55 минСредний
6
Этап 6 из 7

Детальная страница single-equipment.php и кастомные метаполя

~45 минСредний
7
Этап 7 из 7

Микроразметка Schema.org BreadcrumbList и Product

~30 минЛегкий

Типичные грабли на этом ТЗ

2 антипаттерна

Инструменты экосистемы Fullstack AI Lab для этого ТЗ

Интеграция