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

3-минутное чтение
2026-03-16
2026-06-04
2,743
Я получаю комиссионные, когда вы совершаете покупки по ссылкам ниже, без дополнительных затрат для вас.

Что такое пользовательские типы статей?

Стандартные типы контента в WordPress – посты (Posts) и страницы (Pages) – представляют собой встроенные механизмы для создания и управления информацией. Однако при работе с разнообразными задачами, такими как презентация товаров, представление сотрудников команды или публикация примеров реализованных проектов, эти типы контента оказываются недостаточно гибкими. Именно для решения этих проблем была разработана функция пользовательских типов контента (Custom Post Types, CPT). Она позволяет разработчикам создавать новые типы контента с уникальными свойствами: определенными полями для заполнения, специальными системами категоризации и отдельными интерфейсами управления. Благодаря этому WordPress превращается из простой системы ведения блогов в мощную систему управления контентом.

В отличие от использования пользовательских полей для расширения стандартных статей, CPT (Custom Post Types) позволяют создавать логически полностью независимые единицы контента. Например, CPT для “продукта” может иметь собственный процесс публикации, страницу архивации и страницу с подробной информацией; структура данных и интерфейс управления в бэкенде могут быть адаптированы под особенности конкретного продукта. Это значительно повышает четкость и профессионализм управления контентом, а также обеспечивает прочную основу для реализации сложных структур веб-сайтов.

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

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

Рекомендуемое чтение Полное руководство по оптимизации производительности WordPress: от базовой настройки до продвинутых методов ускорения работы сайта с использованием кэша

Регистрация CPT с помощью кода

Самый эффективный метод – это использование… register_post_type Функции. Разработчикам необходимо использовать функции, предусмотренные в данной теме (theme). functions.php Эту функцию можно вызвать из файла или отдельного функционального плагина. Передав уникальный идентификатор (slug) и массив с различными параметрами, вы можете задать все свойства нового типа статьи: метки, уровень доступности, поддерживаемые функции, иконки в меню и многое другое.

Ультахост (UltaHost) – хостинг-провайдер, предоставляющий услуги хостинга для сайтов, построенных на платформе WordPress.
Гарантия возврата средств в течение 30 дней, неограниченная пропускная способность интернет-канала и объем баз данных, бесплатная защита от DDoS-атак. При покупке на срок 3 лет предоставляется скидка в размере 501 ТБ до 4 ТБ.

Ниже приведен классический пример создания пользовательского типа статьи для категории “Продукты”:

function create_product_post_type() {
    $labels = array(
        'name'               => '产品',
        'singular_name'      => '产品',
        'add_new'            => '添加新产品',
        'add_new_item'       => '添加新产品',
        'edit_item'          => '编辑产品',
        'new_item'           => '新产品',
        'view_item'          => '查看产品',
        'search_items'       => '搜索产品',
        'not_found'          => '未找到产品',
        'not_found_in_trash' => '回收站中没有产品',
        'menu_name'          => '产品',
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'product' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-cart',
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
    );
    register_post_type( 'product', $args );
}
add_action( 'init', 'create_product_post_type' );

Создание CPT с использованием плагина

Для пользователей, не знакомых с программированием, такие плагины, как “Custom Post Type UI” или “Toolset Types”, предоставляют графический интерфейс для создания и управления пользовательскими типами записей (Custom Post Types, CPT). Вам достаточно заполнить формы в административной панели и настроить необходимые параметры, после чего плагины автоматически сгенерируют и вставят необходимый код для регистрации новых типов записей. Этот подход эффективен и удобен, однако он может привести к появлению дополнительных зависимостей и снижению производительности системы. При выборе плагина следует учитывать его уровень обслуживания и долгосрочные потребности вашего проекта.

Создание пользовательских шаблонов архивации и одностраничных страниц для CPT (Custom Post Type).

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

Пользовательский шаблон страницы архивации

Чтобы создать архивную страницу для категории товаров (CPT – Product Category Page), то есть страницу с списком всех товаров, необходимо создать файл с именем `products_list.php` в каталоге темы (theme directory). archive-product.php Это файл, в котором хранятся данные о продуктах. Параметр “product” используется при регистрации товара в системе CPT (Content Protection Tools). В этом файле вы можете использовать стандартные циклы работы с данными WordPress (такие как WordPress Loop), чтобы получить и отобразить все статьи, относящиеся к категории “продукты”.

Рекомендуемое чтение Полное руководство по оптимизации производительности сайта WordPress: от ускорения загрузки до практического применения кэширования.

// archive-product.php 示例片段
    <header class="page-header">
        <h1 class="page-title">Наше продукт</h1>
    </header>
    <div class="products-grid">
        <?php while ( have_posts() ) : the_post(); ?>
            <article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
                <a href="/ru/</?php the_permalink(); ?>">
                    <?php the_post_thumbnail( 'medium' ); ?>
                    <h2></h2>
                </a>
                <div class="entry-excerpt">
                    
                </div>
            </article>
        <?php endwhile; ?>
    </div>
    
    <p>В настоящее время нет доступных товаров.</p>

Пользовательский шаблон для отдельной статьи

Аналогичным образом, для создания шаблона страницы с детальной информацией о отдельном “продукте” необходимо выполнить соответствующие действия. single-product.php Файл. Эта шаблон используется для отображения полного содержимого статьи о продукте; здесь вы можете разместить все пользовательские поля, добавленные в редакторе статей.

// single-product.php 示例片段
    <article id="post-<?php the_ID(); ?>" no numeric noise key 1005>
        <header class="entry-header">
            <h1 class="entry-title"></h1>
            <div class="product-meta">
                <span>价格:</span>
                <span>SKU:</span>
            </div>
        </header>
        <div class="entry-content">
            
        </div>
    </article>
<?php endwhile; ?>

Расширенное применение и оптимизация производительности технологии CPT

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

Использование WP_Query для выполнения пользовательских запросов

Хотя основной цикл работы WordPress автоматически обрабатывает запросы к типам контента CPT (Custom Post Types), в боковых панелях, специальных блоках и других разделах сайта часто возникает необходимость в выполнении пользовательских запросов. В таких случаях следует использовать специальные механизмы для формирования и отправки этих запросов. WP_Query Класс, и через него… post_type Параметр указывает код CPT (Cost Per Transaction), по которому необходимо выполнить запрос.

hosting.com Общий хостинг
Высокая производительность благодаря процессорам AMD EPYC, SSD-накопителям NVMe и LiteSpeed, круглосуточная экспертная поддержка, передовые меры безопасности, включая SSL, защиту от грубой силы, вредоносных программ и DDoS, экономия до 73%
// 查询最新 3 个“产品”
$product_query = new WP_Query( array(
    'post_type'      => 'product',
    'posts_per_page' => 3,
    'orderby'        => 'date',
    'order'          => 'DESC',
) );
if ( $product_query->have_posts() ) {
    while ( $product_query->have_posts() ) {
        $product_query->the_post();
        // 输出产品信息
    }
    wp_reset_postdata(); // 重置查询数据
}

Связать CPT (Code for Procedures in Medicine) с пользовательской системой классификации

Для более детальной организации контента CPT (Cost-Per-Transaction) можно создать пользовательские системы классификации. Например, для CPT, связанных с продуктами, можно разработать категории продуктов и их характеристики (теги). Для этого потребуется использовать соответствующие инструменты или специальные модули. register_taxonomy Функция, и при регистрации она передается (или используется) в соответствующем контексте. object_type Этот параметр связывает товар с соответствующей категорией продуктов (CPT – Product Category Code). Это позволяет классифицировать товары по нескольким критериям, аналогично тому, как классифицируются статьи с помощью их категорий и тегов, и создавать страницы с архивами товаров по каждой категории.

Оптимизация производительности CPT

По мере увеличения объема данных запросы к системе CPT могут снижать скорость работы веб-сайта. Ключевые меры по оптимизации включают:
1. Рациональное использование API Transients для кэширования результатов запросов: Для списков CPT (например, популярных товаров), которые редко изменяются, результаты запросов можно сохранять в кэше.
2. Обеспечьте наличие индексов в базе данных: для часто используемых полей запросов в системе CPT (например…). post_type, meta_value Создание индексов (и т. д.) позволяет значительно повысить эффективность выполнения запросов.
3. Использование пагинирования и отложенного загрузки: Для страниц архивации больших объемов данных обязательно включите функцию пагинирования. Для ресурсов вроде изображений рассмотрите возможность применения технологии отложенного загрузки (lazy loading).
4. Избегайте многократных запросов к базе данных во время циклов: особенно следует воздерживаться от их выполнения прямо внутри циклов. get_post_meta Для функций, получающих большое количество пользовательских полей, следует по возможности собирать всю необходимую метадую за один раз.

резюме

Специализированные типы статей в WordPress являются основой для создания профессиональных, сложных веб-сайтов. Они позволяют преодолеть ограничения, связанные с стандартными статьями и страницами, и предоставляют возможность создавать независимые системы управления и отображения контента любого типа (товары, примеры реализации проектов, члены команды и т. д.). register_post_type Функции или плагины создаются на основе определенных шаблонов; при этом для каждого уровня шаблона создается соответствующий индивидуальный вариант функции/плагина. archive-{slug}.php и single-{slug}.php От шаблонов к их использованию. WP_Query Возможность выполнять сложные запросы и связывать их с пользовательскими системами классификации предоставляет разработчикам мощные инструменты для создания структурированного контента. Кроме того, использование механизмов кэширования, индексации и оптимизации запросов позволяет поддерживать высокую производительность при создании крупномасштабных веб-сайтов на основе системы CPT. Овладение технологиями CPT означает, что вы раскрыли потенциал WordPress как зрелой системы управления контентом.

Рекомендуемое чтение Начнем с самого начала: полное руководство и лучшие практики по созданию личного блога с помощью WordPress.

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

В чем разница между пользовательскими типами статей (custom article types) и пользовательскими полями (custom fields)?

Пользовательские типы статей (Custom Post Types, CPT) представляют собой совершенно новые типы контента, обладающие отдельными меню в административной панели, таблицами данных и логической структурой. Они идеально подходят для описания таких ключевых элементов как “продукты” или “мероприятия”.

Кастомные поля (Custom Fields или Meta Boxes) представляют собой инструменты, позволяющие добавлять дополнительные атрибуты или информацию к существующим типам контента (таким как статьи, страницы или шаблоны контента – CPT – Content Type Templates). Например, к шаблону контента для описания продукта можно добавить поля “Цена” и “Цвет”. Шаблон контента определяет, что представляет собой данный тип контента, а кастомные поля указывают, какие атрибуты у него имеются.

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.

Какой способ лучше: регистрировать CPT (Custom Post Type) в файле functions.php темы или в отдельном плагине?

Для специфических для проекта элементов интерфейса (CPT – Custom Product Tags), которые тесно связаны с дизайном текущей темы, их код следует размещать непосредственно внутри кода самой темы. functions.php Это выполнимо.

Однако лучшей практикой является создание отдельного функционального плагина для хранения кода регистрации CPT (Custom Post Type). Преимущество этого подхода заключается в том, что при смене темы CPT вместе со своими содержимыми данных не теряется, что обеспечивает сохранность и независимость контента сайта, соответствуя принципу разделения обязанностей (Separation of Concerns).

Как добавить новые функции поддержки для существующего пользовательского типа статей?

Вы можете использовать add_post_type_support Существуют функции, позволяющие добавлять поддержку определённых функций к уже зарегистрированным типам контента (CPT – Content Types). Например, если вы хотите добавить возможность создания резюме (аннотации) к типу контента “product”, который ранее не поддерживал эту функцию, вы можете воспользоваться соответствующими инструментами, предоставленными системой управления темами (theme management system). functions.php Или добавьте следующий код в плагин:

add_action( 'init', 'add_excerpt_support_for_product' );
function add_excerpt_support_for_product() {
    add_post_type_support( 'product', 'excerpt' );
}

Как работают постоянные ссылки (пермалинки) на статьи с пользовательскими типами статей?

При регистрации CPT необходимо выполнить следующие шаги: rewrite Параметры могут иметь определенную структуру ссылок. Например… 'rewrite' => array( 'slug' => 'product' ) Это приведет к тому, что ссылка на страницу вашего продукта будет выглядеть следующим образом: yourdomain.com/product/some-product/Ссылка на страницу архива обычно выглядит так: yourdomain.com/product/

После регистрации CPT обязательно перейдите в раздел “Настройки” → “Фиксированные ссылки” в интерфейсе WordPress. Не нужно ничего делать особенного — просто нажмите кнопку “Сохранить изменения”. Это обновит правила переопределения ссылок, и ваши пользовательские ссылки будут корректно работать.

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

При использовании… WP_Query При выполнении запроса… post_type Для одновременного запроса информации о нескольких CPT достаточно задать параметры в виде массива.

$multi_cpt_query = new WP_Query( array(
    'post_type' => array( 'post', 'product', 'portfolio' ),
    'posts_per_page' => 10,
) );

Это очень полезно для создания блока “Последние новости” на главной странице, в котором смешаны статьи из блога, информация о продуктах и примерах их использования.