Оволодіння спеціальними типами статей у WordPress: повний практичний посібник від створення до публікації

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

Що таке власні типи статей у WordPress?

WordPress за замовчуванням надає два типи контенту: “Статті” (Articles) та “Сторінки” (Pages). Однак під час створення складних вебсайтів цього часто буває недостатньо. Для розширення можливостей системи використовуються так звані „Користувацькі типи публікацій“ (Custom Post Types, або просто Custom Post Types). CPTЦе одна з ключових функцій WordPress, яка дозволяє розробникам створювати нові типи контенту зі своєю власною структурою даних та інтерфейсом для їх керування в бекенді. Можна уявити це як своєрідний “шаблон контенту”, призначений для обробки певного типу інформації.

Наприклад, веб-сайт з оглядами фільмів може використовувати стандартний тип “Стаття” для публікації новин, а також створити власний тип статті під назвою “Фільм” для керування інформацією про фільми. Кожен запис про фільм може містити спеціальні поля, такі як ім’я режисера, головних акторів, оцінки тощо. Інтернет-магазин може створити тип “Продукт”, а шкільний веб-сайт – типи “Курс” чи “Викладач”. Завдяки використанню таких типів даних можна ефективно організувати та пошуковати інформацію CPTРізні типи контенту чітко розділені, що забезпечує більш ефективне управління даними та створює міцну основу для подальшої налаштування шаблонів та розширення функціоналу.

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

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

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

Реєстрація власних типів статей за допомогою коду

Найстандартніший та найбільш рекомендований спосіб – це використання відповідних елементів теми (theme elements). functions.php Використовується у файлі або як окремий функціональний плагін. register_post_type Функція здійснює реєстрацію. Ця функція приймає два параметри: ідентифікатор (slug) власного типу статті та масив, який містить усі необхідні параметри.

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

Ось базовий приклад створення власного типу статті під назвою “Фільми”:

function create_movie_post_type() {
    $labels = array(
        'name'               => '电影',
        'singular_name'      => '电影',
        'menu_name'          => '电影管理',
        'add_new_item'       => '添加新电影',
        'edit_item'          => '编辑电影',
        'view_item'          => '查看电影',
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'movie' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-video-alt',
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
    );
    register_post_type( 'movie', $args );
}
add_action( 'init', 'create_movie_post_type' );

Цей код виконує add_action Хаки виконуються під час ініціалізації WordPress. create_movie_post_type Функція. Усередині цієї функції визначено код для відображення етикеток. $labels та ключові параметри $argsКлючові параметри включають:public Контроль того, чи відображати інформацію у фоновому режимі (в бекграунді) чи на головному екрані (у фронтенді).rewrite Визначимо правила переадресування URL-адрес. У цьому випадку посилання на окремий фільм буде виглядати таким чином: yoursite.com/movie/some-moviehas_archive Вирішувати, чи потрібна сторінка архіву (наприклад…) yoursite.com/movie/);supports Масив визначає функції, які підтримується цим типом контенту: заголовки, редактори, фірмові зображення тощо.

Створення власного типу статті за допомогою плагіна

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

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

Рекомендуємо до прочитання. Посібник з розробки тем для WordPress: створення високопродуктивних, кастомізованих тем з нуля

Для додавання власних полів до типів статей необхідно виконати наступні кроки:

Сам тип статті, створений користувачем, надає лише структурну основу для зберігання даних. Щоб у ньому можна було зберігати унікальну інформацію (наприклад, дату виходу фільму чи ім’я режисера), необхідно використовувати спеціальні поля (Custom Fields) або більш потужні інструменти для налаштування структури даних – так звані мета-бокси (Meta Boxes). WordPress має вбудований інтерфейс для керування цими полями, але він простий у використанні та має обмежені можливості, що не дуже зручно для користувачів, які займаються редагуванням контенту.

Використовуйте плагін для роботи зі складними, налаштовуваними полями.

Плагін Advanced Custom Fields (ACC) є стандартом галузі для роботи з користувацькими полями. Він дозволяє вам налаштовувати ці поля за допомогою графічного інтерфейсу для різних типів статей (включаючи ваші власні). CPTСтворюйте різні типи груп полів, такі як текстові поля, поля для зображень, полі вибору, полі для встановлення зв’язків тощо.

Наприклад, для слова “фільм”.” CPT Створіть групу полів, яка міститиме поля “Режисер”, “Виконавці головних ролей” та “Рік виходу фільму”. Після встановлення та активації плагіна ACF перейдіть на його налаштування, створіть нову групу полів та встановіть правило розташування таким чином: “Тип статті дорівнює Фільм”. Далі додайте до цієї групи поля “Режисер” (текстове поле), “Виконавці головних ролей” (текстове поле з можливістю введення кількох значень) та “Рік виходу фільму” (числове поле). Збережіть зміни, і під час редагування інформації про фільм у системі з’являться зручні поля для введення даних.

hosting.com Віртуальний хостинг
Висока продуктивність завдяки процесорам AMD EPYC, SSD-накопичувачам NVMe і технології LiteSpeed, цілодобова експертна підтримка, розширені заходи безпеки, включаючи SSL, грубу силу, захист від шкідливих програм і DDoS, економія до 73%.

Створення власного мета-бокса за допомогою коду

Якщо ви бажаєте повністю контролювати все за допомогою коду, ви можете це зробити для свого продукту. CPT Розробка власних мета-боксів (meta boxes) передбачає використання API та функцій для зберігання даних, доступних у WordPress. Хоча обсяг коду може бути значним, це дає повну свободу налаштувань.

Ось спрощений приклад того, як додати поле “Режисер” до запису про фільм:

// 1. 添加元框
function add_movie_director_meta_box() {
    add_meta_box(
        'movie_director_meta_box', // 元框ID
        '导演信息', // 元框标题
        'render_movie_director_meta_box', // 回调函数,用于输出HTML
        'movie', // 目标文章类型
        'side', // 位置
        'default' // 优先级
    );
}
add_action( 'add_meta_boxes', 'add_movie_director_meta_box' );

// 2. 渲染元框内容
function render_movie_director_meta_box( $post ) {
    // 获取已保存的值
    $director = get_post_meta( $post->ID, '_movie_director', true );
    // 添加安全字段
    wp_nonce_field( 'movie_director_nonce_action', 'movie_director_nonce' );
    // 输出HTML
    echo '<label for="movie_director">导演姓名:</label>';
    echo '<input type="text" id="movie_director" name="movie_director" value="' . esc_attr( $director ) . '" style="width:100%;" />';
}

// 3. 保存元框数据
function save_movie_director_meta_data( $post_id ) {
    // 检查nonce、权限、自动保存等
    if ( ! isset( $_POST['movie_director_nonce'] ) || ! wp_verify_nonce( $_POST['movie_director_nonce'], 'movie_director_nonce_action' ) ) {
        return;
    }
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    // 保存数据
    if ( isset( $_POST['movie_director'] ) ) {
        update_post_meta( $post_id, '_movie_director', sanitize_text_field( $_POST['movie_director'] ) );
    }
}
add_action( 'save_post', 'save_movie_director_meta_data' );

Цей код створює мета-блок, який розташовується у бічній панелі та містить поле для введення імені режисера. Під час збереження даних використовується стандартна процедура перевірки безпеки WordPress, яка включає… nonce Під час перевірки, перевірки прав доступу та запобігання повторній обробці даних під час автоматичного збереження, збережені дані проходять певні процедури обробки. update_post_meta Функції зберігаються у… wp_postmeta У таблиці.

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

Створення шаблонного файлу для власного типу статті

Створено. CPT Після заповнення контенту необхідно надати шаблон для його відображення на передньому кінці (фронтенді). WordPress використовує систему шаблонів різних рівнів та автоматично знаходить відповідні файли шаблонів для відображення вашого контенту.

Шаблон для однієї статті

Коли користувач переходить на сторінку з інформацією про окремий фільм (наприклад…) yoursite.com/movie/inceptionКоли ви створюєте нову сторінку у WordPress, система шукає файли шаблонів у наступному порядку:
1. single-movie.php (Найбільш конкретно)
2. single.php
3. singular.php
4. index.php

Міжсерверний віртуальний хостинг
Віртуальний хостинг $2.50 USD на місяць, перший місяць $0.1 USD за промокодом tryinterserver, 461 скрипт хмарних додатків, встановлення в один клік.

Отже, найкращою практикою є створення у вашій папці з темами файлу під назвою single-movie.php Файл. У цьому файлі ви можете повністю налаштувати спосіб відображення фільму, використовуючи раніше створені користувацькі поля.

<?php get_header(); ?>
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
    <header class="entry-header">
        <h1 class="entry-title"><p><strong>  <p><strong></h1>
        <div class="entry-meta">
            <span>导演:</span>
        </div>
    </header>
    <div class="entry-content">
        
        <!-- 显示其他自定义字段,如主演、上映年份 -->
        <p><strong>Виконавці головних ролей:</strong><?php the_field( 'lead_actor' ); ?></p>
        <p><strong>Рік виходу на екрани:</strong><?php the_field( 'release_year' ); ?></p>
    </div>
</article>
<?php get_footer(); ?>

Якщо використовується плагін ACF, можна скористатися функціями, які він надає. the_field() Функція зручно виводить значення полів. Якщо поля зберігаються за допомогою власного коду, то використовується цей власний код для їх отримання. get_post_meta() Функція.

Шаблон сторінки архіву

Коли користувач відвідує сторінку зі списком фільмів (наприклад… yoursite.com/movie/Коли це відбувається, WordPress шукає:
1. archive-movie.php
2. archive.php
3. index.php

Створити archive-movie.php У цьому файлі ви можете використовувати цикли WordPress для переліку всіх фільмів, а також налаштовувати параметри пошуку чи використовувати функцію перегортання сторінок.

<?php get_header(); ?>
<h1>Кінотека</h1>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article>
        <h2><a href="/uk/</?php the_permalink(); ?>"><p><strong>  <p><strong></a></h2>
        <?php the_post_thumbnail( 'medium' ); ?>
        <p>导演:</p>
        <?php the_excerpt(); ?>
    </article>
<?php endwhile; the_posts_navigation(); else : ?>
    <p>Наразі немає жодних фільмів.</p>

підсумок

Оволодіння можливостями кастомізації типів статей у WordPress є ключовим кроком на шляху від простого блогу до створення сучасного веб-сайту з розширеними функціями та чіткою структурою. register_post_type Функція починається з реєстрації коду, потім додаються спеціальні поля за допомогою плагіна ACF чи власних мета-фільтрів, а нарешті створюються ексклюзивні елементи відповідно до структури шаблонів. single-{cpt}.phparchive-{cpt}.php Шаблонні файли; весь цей процес утворює цілісну систему. CPT Розробка робочих процесів (Workflow Development).

За допомогою практичних зусиль ми створили тип контенту “Фільм”, який має власний меню на серверній стороні, спеціальні поля для зберігання даних та налаштоване відображення на клієнтській стороні. Цю методологію можна без проблем застосувати до будь-яких типів контенту – “Продуктів”, “Колекцій”, “Заходів” тощо. Розуміння та використання цих знань суттєво покращить ваші навички розробника WordPress, дозволивши створювати для користувачів справді індивідуальні цифрові досвіди.

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

У чому різниця між власними типами статей та власними системами класифікації?

Користувацькі типи статей призначені для визначення нових видів контенту, таких як “фільми” чи “продукти”. Користувацькі системи класифікації (наприклад, теги чи розширення каталогів) використовуються для класифікації та організації цього контенту. Один користувацький тип статті може бути пов’язаний з кількома користувацькими системами класифікації. Наприклад, тип статті “Фільм” може міст CPT Можна пов’язати два власноруч створені критерії класифікації: “Тип” (дія, комедія) та “Регіон” (китайська мова, Голлівуд).

Чи слід мені реєструвати CPT у файлі functions.php теми, чи у окремому плагіні?

Це залежить від складності проекту та вимог до його портативності. Для проектів, які тісно пов’язані з певною темою та не підлягають повторному використанню… CPTЦе можна розмістити у розділі, присвятованому темі. functions.php Так. Але найкращою практикою є створення окремого функціонального плагіна для зберігання всього коду, необхідного для реєстрації власних типів статей та класифікацій. Це дозволяє зберегти ці типи контенту та їхні дані навіть після зміни теми сайту, що сприяє кращому розділенню “функціональності” веб-сайту від його “вигляду”.

Як змінити структуру постійних посилань на існуючі типи користувацьких статей?

Ви можете зареєструватися. CPT Через… rewrite Налаштування параметрів також можна здійснити після реєстрації. register_post_type_args Необхідно змінити налаштування фільтра. Після цього потрібно перейти в панель налаштувань WordPress (“Settings”) → “Permalinks” (“Фіксовані посилання”) та просто натиснути „Зберегти зміни“ („Save Changes“), щоб оновити правила переадресування посилань. Інакше нова структура посилань може не спрацювати.

Чому я не бачу створені мене типи власних статей на фронтенді?

Це зазвичай відбувається через неправильне налаштування параметрів реєстрації. Спочатку перевірте функцію реєстрації. $args У масиві 'public''publicly_queryable' Чи були всі параметри встановлені? trueПо-друге, переконайтеся, що… 'show_ui''show_in_nav_menus' Також trueНаостанок, перевірте файли шаблонів (template files).single-{cpt}.phparchive-{cpt}.phpЧи було правильно створено файл та чи знаходиться він у кореневому каталозі теми заходу?