Как настроить отображение разных типов записей в теме WordPress

В современной разработке тем для WordPress часто возникает задача настроить уникальное отображение для разных типов записей (custom post types). Это позволяет структурировать контент и сделать сайт более удобным для пользователя. В этой статье разберём, как правильно реализовать поддержку и кастомизацию вывода различных типов записей прямо в вашей теме.

Что такое типы записей в WordPress и зачем их кастомизировать

По умолчанию WordPress имеет стандартные типы записей — записи (posts) и страницы (pages). Но для расширения функционала сайта можно создавать свои типы записей, например, «Портфолио», «Отзывы», «События» и т.д. Каждый тип записи может иметь свои поля, таксономии и, самое главное, собственный способ отображения на сайте.

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

Регистрация собственного типа записи с поддержкой шаблонов

Для начала зарегистрируем собственный тип записи в файле темы functions.php. Рассмотрим пример для типа записи portfolio:

function wpthemes_register_post_types() {
    $labels = array(
        'name'               => 'Портфолио',
        'singular_name'      => 'Портфолио',
        'menu_name'          => 'Портфолио',
        'add_new'            => 'Добавить элемент',
        'add_new_item'       => 'Добавить новый элемент портфолио',
        'edit_item'          => 'Редактировать элемент',
        'new_item'           => 'Новый элемент',
        'view_item'          => 'Просмотреть элемент',
        'search_items'       => 'Поиск элементов',
        'not_found'          => 'Не найдено',
        'not_found_in_trash' => 'Не найдено в корзине'
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'rewrite'            => array('slug' => 'portfolio'),
        'supports'           => array('title', 'editor', 'thumbnail', 'excerpt'),
        'show_in_rest'       => true
    );

    register_post_type('portfolio', $args);
}
add_action('init', 'wpthemes_register_post_types');

Этот код создаёт новый тип записи с названием «Портфолио», который поддерживает заголовок, редактор, миниатюру и краткое описание, а также интегрируется с редактором Gutenberg (show_in_rest).

Создание шаблонов для кастомных типов записей

Чтобы настроить вывод типа записи, нужно создать отдельные шаблоны в теме:

  • single-portfolio.php — для отдельной записи портфолио;
  • archive-portfolio.php — для страницы архива портфолио.

В файле single-portfolio.php можно вывести кастомные поля, галереи или другие данные. Пример минимального шаблона:

<?php get_header(); ?>

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
    <h1><?php the_title(); ?></h1>
    <div class="portfolio-content">
        <?php the_content(); ?>
        <?php if(has_post_thumbnail()) : ?>
            <div class="portfolio-thumbnail">
                <?php the_post_thumbnail('large'); ?>
            </div>
        <?php endif; ?>
    </div>
<?php endwhile; endif; ?>

<?php get_footer(); ?>

Для архива создаём archive-portfolio.php, где можно вывести список всех элементов с пагинацией и фильтрацией.

Добавление кастомных полей и их вывод в шаблонах

Для расширения данных типа записи можно использовать кастомные поля через плагины, например, Advanced Custom Fields (ACF) или написать простую функцию для вывода мета-полей.

Пример добавления и вывода мета-поля «Год создания» для портфолио:

function wpthemes_add_meta_boxes() {
    add_meta_box('wpthemes_portfolio_year', 'Год создания', 'wpthemes_portfolio_year_callback', 'portfolio', 'side', 'default');
}
add_action('add_meta_boxes', 'wpthemes_add_meta_boxes');

function wpthemes_portfolio_year_callback($post) {
    $value = get_post_meta($post->ID, '_portfolio_year', true);
    echo '<input type="number" name="_portfolio_year" value="' . esc_attr($value) . '" style="width:100%;" />';
}

function wpthemes_save_postdata($post_id) {
    if(array_key_exists('_portfolio_year', $_POST)) {
        update_post_meta($post_id, '_portfolio_year', sanitize_text_field($_POST['_portfolio_year']));
    }
}
add_action('save_post', 'wpthemes_save_postdata');

Теперь в шаблоне single-portfolio.php можно вывести это поле:

<?php
$year = get_post_meta(get_the_ID(), '_portfolio_year', true);
if($year) {
    echo '<p><strong>Год создания:</strong> ' . esc_html($year) . '</p>';
}
?>

Фильтрация и сортировка записей кастомного типа в цикле

Чтобы вывести записи определённым образом на странице архива или в любом месте темы, используйте WP_Query с параметрами фильтрации:

$args = array(
    'post_type'      => 'portfolio',
    'posts_per_page' => 10,
    'meta_key'       => '_portfolio_year',
    'orderby'        => 'meta_value_num',
    'order'          => 'DESC'
);
$query = new WP_Query($args);

if($query->have_posts()) {
    while($query->have_posts()) {
        $query->the_post();
        // вывод записи
    }
    wp_reset_postdata();
}

Так можно вывести последние 10 портфолио, отсортированных по году создания в порядке убывания.

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

Не забудьте добавить поддержку пагинации в архиве, чтобы пользователь мог листать страницы. Для этого используйте функцию the_posts_pagination() или paginate_links(). В файле archive-portfolio.php пример:

<?php
if(have_posts()) :
    while(have_posts()) : the_post();
        ?>
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <?php
    endwhile;
    the_posts_pagination(array(
        'mid_size' => 2,
        'prev_text' => 'Назад',
        'next_text' => 'Вперёд'
    ));
else :
    echo '<p>Записей не найдено.</p>';
endif;
?>

Также важно правильно настроить ЧПУ (человеко-понятные урлы) в настройках пермалинков и проверить, что для типа записи установлен параметр has_archive => true.

Примеры полезных плагинов для работы с кастомными типами записей

Для удобства работы с типами записей и кастомными полями советую обратить внимание на следующие плагины:

  • Clearfy Pro — оптимизация и расширение возможностей, в том числе для кастомных типов;
  • WPRemark — расширение комментариев и отзывов, можно интегрировать с кастомными типами;
  • Advanced Custom Fields (бесплатный плагин в репозитории WordPress) — для создания и управления мета-полями.

Итоги и рекомендации по работе с кастомными типами записей

Настройка отображения разных типов записей в теме WordPress — это мощный инструмент для создания уникальных сайтов с гибкой структурой контента. Важно:

  • Правильно зарегистрировать тип записи с нужными параметрами и поддержкой шаблонов;
  • Создать отдельные шаблоны single- и archive- для вывода;
  • Добавить кастомные поля для расширения данных;
  • Использовать WP_Query для фильтрации и сортировки;
  • Обеспечить корректную пагинацию и SEO-настройки;
  • Использовать проверенные плагины для упрощения работы.

Такой подход даёт полный контроль над контентом и улучшает опыт пользователей вашего сайта.

Как удалить строку из вывода поста в WordPress
09.12.2025
Как удаленно обновлять темы WordPress без входа в админку
05.12.2025
Как удалить виджет или область сайдбара в WordPress без плагинов
16.01.2026
Как создать динамические скрипты в теме WordPress
09.01.2026
Как добавить динамические стили в тему WordPress
22.12.2025