Skip to content

Всё для WordPress, веб-разработки — и не только

🚀 Как создать страницу архива для кастомных записей в WordPress

🚀 Как создать страницу архива для кастомных записей в WordPress

Когда сайт выходит за рамки «блог плюс несколько страниц», стандартных записей и рубрик перестаёт хватать. Портфолио, команда, отзывы, кейсы, вакансии, всё это хочет жить в собственной структуре, а не ютиться в общем потоке постов с костылями из рубрик.

WordPress решает эту задачу через кастомные типы записей. Но создать CPT недостаточно, нужна ещё и страница, на которой все записи этого типа собираются вместе: страница архива. Без неё посетитель просто не увидит список ваших работ или специалистов единым блоком.

Плагины-гриды вроде Essential Grid справляются с визуалом, но добавляют лишний CSS и JS. На небольших проектах это незаметно, а на сайте с парой десятков тысяч посетителей каждый килобайт на счету. Штатный механизм архивов WordPress даёт ту же функциональность без нагрузки на фронтенд, и настраивается за 10 минут.

💡 Быстрый обзор:

  • Создаём кастомный тип записей через CPT UI и сразу включаем поддержку архива в настройках
  • При необходимости пишем кастомный шаблон для точного контроля вёрстки
  • Настраиваем SEO-метаданные через Yoast SEO: title, description и og:image для страницы архива
  • При необходимости отключаем сайдбар и добавляем Open Graph-разметку

1. Создание кастомного типа записей

Самый простой и надёжный способ зарегистрировать CPT без единой строчки кода, плагин Custom Post Type UI. Он установлен более чем на миллион сайтов и поддерживается с 2010 года, а интерфейс интуитивно понятен: поля формы один в один соответствуют аргументам функции register_post_type().

Страница плагина Custom Post Type UI в репозитории WordPress

После установки плагина перейдите в CPT UI → Add/Edit Post Types. Заполните минимум:

  • Post Type Slug, латиницей, без пробелов (например portfolio)
  • Plural Label, «Портфолио»
  • Singular Label, «Работа»

Остальные настройки можно оставить по умолчанию, дефолтные значения покрывают подавляющее большинство типовых сценариев. Нажмите Add Post Type, и новый тип появится в админке отдельным пунктом меню.

2. Настройка страницы архива

Чтобы записи нового типа собирались на отдельной странице, нужно явно включить поддержку архивов. По умолчанию она выключена.

Перейдите в CPT UI → Edit Post Types, выберите созданный тип из списка:

Страница редактирования кастомного типа записей в CPT UI

Прокрутите до секции Settings и заполните два ключевых поля:

Поля настроек Has Archive и Custom Rewrite Slug в CPT UI
  • Has Archive, установите True. Это и есть выключатель страницы архива.
  • Custom Rewrite Slug, slug, по которому архив будет доступен. Обычно совпадает с post type slug (например portfolio).

Сохраните изменения и перейдите по адресу http://ВАШ_САЙТ/portfolio. Вы увидите список всех записей этого типа, оформленный стандартным шаблоном archive.php активной темы:

Пример страницы архива кастомного типа записей portfolio

Базовая страница готова. Если стандартного вида достаточно, на этом можно остановиться. Но в большинстве случаев внешний вид хочется доработать.

3. Кастомный шаблон archive-{posttype}.php

WordPress использует чёткую иерархию шаблонов. Когда посетитель заходит на страницу архива CPT, ядро ищет файлы в порядке:

  • archive-{posttype}.php
  • archive.php
  • index.php

Это значит, что достаточно создать файл с именем archive-portfolio.php (где portfolio, ваш post type slug), и WordPress сам подхватит его.

Порядок действий:

Скопируйте содержимое archive.php вашей темы в новый файл archive-portfolio.php. Затем меняйте вёрстку под задачу: скройте дату, если она не нужна для портфолио; выведите миниатюру в другом размере; замените стандартный the_excerpt() на the_content().

1<?php
2/* Template for Portfolio archive — overrides archive.php */
3
4if ( have_posts() ) {
5 while ( have_posts() ) {
6 the_post();
7 // Your custom markup here
8 the_post_thumbnail( 'medium' );
9 the_title( '<h3>', '</h3>' );
10 the_excerpt();
11 }
12}

Если вы работаете с FSE-темой (Block Theme), шаблон архива создаётся в редакторе сайта: Appearance → Editor → Templates → Add New Template → Archive: Portfolio. Без PHP, чисто блоками, но логика та же: своя вёрстка для конкретного CPT.

4. SEO-оптимизация страницы архива

Страница архива, это не просто служебный URL. Поисковики индексируют её, и она вполне может приводить трафик по коммерческим запросам вроде «портфолио веб-студии» или «команда агентства».

Если у вас установлен Yoast SEO, метаданные для архивов CPT настраиваются в одном месте:

Настройки типов содержимого в Yoast SEO для кастомных записей

Откройте Yoast SEO → Settings → Content Types, найдите свой Custom Post Type и раскройте секцию. Установите шаблоны для title и meta description:

Поля шаблона title и description для страницы архива в Yoast SEO

Рекомендуемые шаблоны:

  • Title: %%pt_plural%% %%page%%, %%sitename%%
  • Meta description: %%pt_plural%%, примеры работ, кейсы и проекты. %%sitename%%

Переменные %%pt_plural%% и %%pt_single%% Yoast подставляет автоматически из настроек CPT. Не забудьте отключить noindex для страницы архива, если он включён по умолчанию, галочка Show in search results должна быть активна.

5. Open Graph-разметка и сайдбар

Чтобы при расшаривании ссылки на страницу архива в соцсетях подтягивалась картинка, добавьте og:image через хук wp_head. Код вставляется в functions.php активной темы или через плагин Code Snippets:

1add_action( 'wp_head', 'cpt_archive_og_image' );
2function cpt_archive_og_image() {
3 if ( is_post_type_archive( 'portfolio' ) ) {
4 echo '<meta property="og:image" content="' .
5 get_template_directory_uri() . '/images/portfolio-og.jpg' . '" />';
6 }
7}

Условие is_post_type_archive() срабатывает только на странице архива указанного CPT, так что на остальные страницы разметка не повлияет. Изображение положите в папку темы или загрузите через медиатеку и пропишите прямой URL.

Последний штрих, сайдбар. На страницах архивов он часто не нужен, особенно для портфолио или команды, где важна ширина карточек. Большинство современных тем позволяют отключить сайдбар в настройках страницы:

Настройки отключения сайдбара в визуальном редакторе темы

В блочных темах переключите шаблон на Full Width в настройках страницы архива. В классических, поищите Page Attributes → Template → Full Width в кастомайзере или метабоксе редактирования.

📺 Видео: весь процесс за 8 минут

Короткая демонстрация на английском, создание CPT, включение архива и кастомный шаблон от первого клика до готовой страницы:

⁉️🤔 Частые вопросы

Почему страница архива отдаёт 404 после создания CPT?

Скорее всего, вы не включили параметр Has Archive. Перейдите в CPT UI → Edit Post Types, найдите свой тип, установите Has Archive в True и укажите Custom Rewrite Slug. После сохранения обязательно зайдите в Settings → Permalinks и нажмите «Save Changes», это сбросит кеш правил перезаписи.

Можно ли обойтись без плагина CPT UI?

Да, кастомные типы записей регистрируются в functions.php через функцию register_post_type(). Код на 15-20 строк, для разработчика это дело пары минут. Плагин просто даёт визуальный интерфейс и избавляет от опечаток в аргументах.

Как вывести записи CPT на главной странице?

Добавьте 'has_archive' => true в аргументы register_post_type(), а чтобы записи попадали в общий поток, установите 'public' => true и 'exclude_from_search' => false. Для точечного вывода используйте WP_Query с аргументом 'post_type' => 'portfolio'.

Чем archive-{posttype}.php отличается от taxonomy-{taxonomy}.php?

Первый отвечает за страницу со ВСЕМИ записями CPT, второй, за фильтрацию по конкретному термину таксономии (например, «Тип проекта: лендинг»). Оба работают по иерархии шаблонов, но срабатывают на разных URL.

Обязательно ли создавать кастомный шаблон?

Нет. Если вас устраивает стандартный archive.php, просто включите Has Archive и пользуйтесь. Кастомный шаблон нужен, когда требуется уникальная вёрстка: другие размеры миниатюр, отсутствие дат, грид вместо списка.

Что делать, если стандартный шаблон не устраивает?

Страница архива для кастомных записей, штука, которую вы настраиваете один раз и забываете. CPT UI плюс пара строчек в functions.php закрывают вопрос полностью: никаких плагинов-комбайнов, никакого лишнего кода на фронтенде.

Если после прочтения остались вопросы по конкретной теме или связке плагинов, напишите в комментариях под постом. Разберём ваш кейс отдельно.