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

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

Що таке власний тип статті (custom article type)?

Основні типи контенту у WordPress – це пости (Post) та сторінки (Page) – є двома вбудованими типами контенту. Однак під час роботи з різноманітними завданнями, такими як презентація продуктів, опис членів команди чи приклади проектів, ці типи часто виявляються недостатніми. Саме для вирішення цієї проблеми була створена можливість налаштування власних типів постів (Custom Post Type, CPT). Ця функція дозволяє розробникам визначати нові типи контенту з певними полями, власними категоріями та спеціальними інтерфейсами керування, що перетворює WordPress з простої системи блогів на потужну систему управління контентом.

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

Як створити власний тип статті?

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

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

Реєстрація CPT за допомогою коду

Найбільш ефективним методом є використання… register_post_type Функції. Розробникам необхідно враховувати особливості конкретної теми (тематики проекту) під час створення функцій. functions.php Цю функцію можна викликати з файлу або окремого функціонального плагіна. Шляхом передачі унікального ідентифікатора (slug) та масиву параметрів ви можете визначити всі атрибути нового типу статті: мітки, рівень доступності, підтримувані функції, іконки меню тощо.

UltaHost – хостинг для сайтів, побудованих на платформі WordPress
Гарантія повернення грошей протягом 30 днів, необмежена пропускна здатність мережі та доступ до баз даних, безкоштовний захист від DDoS-атак; знижка 50% при покупці на термін 3 роки (варіанти об’ємів трафіку: 4 ТБ/5

Ось класичний приклад створення власного типу статті для категорії “Продукти”:

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 Product Type) за допомогою плагіна

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

Створення власних шаблонів архівування та односторінкових сторінок для CPT

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

Користувацький шаблон сторінки архіву

Щоб створити архівну сторінку для категорії “Продукти” (тобто сторінку зі списком усіх продуктів), вам потрібно створити файл у каталозі тем під назвою… archive-product.php Це файл, у якому зберігається інформація про продукти, зареєстровані під певним ідентифікатором (slug). Ідентифікатор “product” використовується під час реєстрації продуктів у системі CPT (Custom Post Type). У цьому файлі ви можете використовувати стандартні механізми циклів (loops) WordPress для отримання та відображення всіх статей, які належать до категорії “продукти”.

Рекомендуємо до прочитання. Кінцевий путівник із оптимізації продуктивності веб-сайтів 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="/uk/</?php the_permalink(); ?>">
                    <?php the_post_thumbnail( 'medium' ); ?>
                    <h2><p><strong>  <p><strong></h2>
                </a>
                <div class="entry-excerpt">
                    <?php the_excerpt(); ?>
                </div>
            </article>
        <?php endwhile; ?>
    </div>
    
    <p>Наразі немає продуктів у наявності.</p>
<?php endif; ?>

Кастомний шаблон для окремої статті

Так само, щоб створити шаблон сторінки з деталями для окремого “продукту”, необхідно виконати відповідні кроки. 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"><p><strong>  <p><strong></h1>
            <div class="product-meta">
                <span>价格:</span>
                <span>SKU:</span>
            </div>
        </header>
        <div class="entry-content">
            <p><strong>  <p><strong>
        </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 (Cost Per Transaction) з власною системою класифікації

Щоб більш детально організувати вміст CPT (Cost-Per-Treatment), можна створити для нього власну систему класифікації. Наприклад, для CPT, пов’язаного з продуктами, можна встановити такі категорії, як “Категорії продуктів” та “Теги продуктів”. Для цього потрібно використов register_taxonomy Функція, яка виконується під час реєстрації… object_type Цей параметр пов’язує продукт із відповідною категорією (CPT – Category Product). Це дозволяє класифікувати продукти багатовимірно, подібно до класифікації статей за їхніми категоріями та тегами, а також створювати відповідні архівні стор

Оптимізація продуктивності CPT

Зі збільшенням обсягу даних запити до системи CPT (Content Protection Technology) можуть впливати на швидкість роботи веб-сайту. Основні заходи оптимізації включають:
1. 合理使用 Transients API 缓存查询结果:对于不频繁变动的 CPT 列表(如热门产品),可以将其查询结果缓存起来。
2. 确保数据库索引:为 CPT 常用的查询字段(如 post_type, meta_value Створення індексів (і т. д.) може значно підвищити ефективність запитів.
3. 使用分页和延迟加载:对于大量数据的归档页,务必启用分页。对于图片等资源,考虑使用懒加载技术。
4. 避免在循环中进行多次数据库查询:尤其要避免在循环内部调用 get_post_meta Функції, які отримують велику кількість власних полів, повинні намагатися отримати всі необхідні метадані одночасно.

підсумок

Користувацькі типи статей у WordPress є основою для створення професійних, складних веб-сайтів. Вони дозволяють подолати обмеження стандартних статей та сторінок, надаючи можливість створювати незалежні та повнофункціональні системи для керування та відображення контенту будь-якого типу – продуктів, випадків використання, членів команди тощо. register_post_type Функції чи плагіни створюються на основі певних шаблонів; при цьому можна розробляти спеціальні рішення, які відповідають конкретним вимогам та структурі цих шаблонів. archive-{slug}.phpsingle-{slug}.php Від шаблонів до їх використання WP_Query Виконання складних запитів та їх пов’язування зі створеними користувачем системами класифікації надають розробникам потужні можливості для моделювання контенту. Крім того, впровадження механізмів кешування, індексування та оптимізації запитів гарантує хорошу продуктивність під час створення великих веб-сайтів за допомогою системи CPT. Оволодіння системою CPT означає, що ви розкрили для себе основний потенціал WordPress як зрілого системного менеджера контенту.

Рекомендуємо до прочитання. З нуля: повний посібник із кращих практик для створення особистого блогу за допомогою WordPress.

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

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

Користувацькі типи статей (Custom Post Types, CPT) створюють абсолютно нові типи контенту, які мають власні меню в адміністративній панелі, таблиці даних та логічну структуру. Вони ідеально підходять для опису таких ключових елементів, як “продукти” чи “заходи”.

Користувацькі поля (Custom Fields або Meta Boxes) – це інструменти для додавання додаткових атрибутів чи інформації до вже існуючих типів контенту (наприклад, статей, сторінок чи шаблонів контенту типу CPT – Custom Post Types). Наприклад, до шаблону контенту типу “Продукт” можна додати поля “Ціна” чи “Колір”. Шаблон контенту визначає, “що” це таке, а користувацькі поля описують, “які атрибути” має цей тип контенту.

Міжсерверний віртуальний хостинг
Віртуальний хостинг $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 та його вмістовні дані не зникають, що забезпечує стабільність та незалежність вмісту веб-сайту та відповідає принципу розділення обов’язків та функцій.

Як додати нові функції підтримки до існуючого типу власних статей?

Ви можете використовувати ці можливості. add_post_type_support Функції призначені для надання підтримки вже зареєстрованим типам контенту (CPT – Content Types). Наприклад, якщо ви хочете додати підтримку розділу “Анотація” до типу контенту “product”, який раніше не підтримував цей розділ, ви можете це зробити в налаштуваннях т functions.php Або додайте наступний код до плагіна:

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

Як працює посилання на статтю з встановленим типом статті (Перманентне посилання – Permalink)?

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

Після реєстрації CPT обов’язково перейдіть на сторінку “Налаштування” -> “Фіксовані посилання” у WordPress-бекенді. Не потрібно робити нічого особливого – просто натисніть кнопку “Зберегти зміни”. Це оновить правила переадресування та гарантуватиме, що ваші власні посилання будуть функціонувати коректно.

Як переглянути вміст кількох власних типів статей?

Під час використання… WP_Query Під час виконання запиту… post_type Достатньо встановити параметр у вигляді масиву, щоб одночасно здійснити запит до кількох CPT (Content Promotion Tools).

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

Це дуже корисно для створення блоку “Останні новини” на головній сторінці, який поєднує у собі блог-публікації, інформацію про продукти та приклади їх використання.