Как сделать произвольный тип записи WordPress. Плагин Custom Post Type UI

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

Тип записей — это не что иное, как название определённого контента. К примеру, страницы, вложения, пост, элементы меню и редакция.

Произвольные типы записей, как и обычные посты, можно разбивать на категории, создавая для них свою таксономию. А также менять оформление, создавать свой шаблон, в общем, полностью редактировать под свои нужды. Такой формат отлично подойдёт для контента типа: фильмы, стихи и прочее. Давайте рассмотрим, как это делается.

Плагин Custom Post Type UI

произвольный тип записи WordPress

Этот плагин позволяет регистрировать и управлять пользовательскими типами записей через интерфейс. Точно так же и таксономию. Всё очень удобно и несложно. Единственное, что может вызвать неудобство, так это то, что в нём отсутствует русский язык. Но с этим, думаю, можно справиться. И учитывая его популярность, около миллиона установок, поддержка русского языка появится в будущих обновлениях. Давайте вкратце ознакомимся с его использованием.

Custom Post

Настройка плагина Custom Post Type UI

После установки плагина Custom Post Type UI в админ-панели появится новая вкладка «CKT UI». Открываем сразу раздел Add/Edit Post Types – добавить новый тип записи. Потом в этой же вкладке его можно редактировать.

На этой открытой странице вы увидите много незаполненных полей. Пугаться этого не стоит, большая час заполняется полуавтоматом. Главное, заполняем основные настройки – три первых поля.

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

Post Type Slug – ярлык будущих постов. Он должен быть уникальным и не совпадать с уже имеющими названиями. Допускаются латинские буквы и цифры.
Plural Label – здесь можно написать название на русском языке. Этот текст будет отображаться в разделе админке в положенных местах.
Singular Label – тут так же. Текст на русском, только в одиночном количестве. Смотрите пример выше.

И нажмите на ссылку «заполнить дополнительные поля». Этим действием мы подставим названия из первого блока во второй «Additional labels». Только вам нужно будет немного отредактировать текст и поставить правильно падежи.

И остаётся последний блок «Настройки/Settings». В нём всё можно оставить по умолчанию, за исключением параметра Has Archive. Устанавливаем параметр в значении True, чтобы у произвольных типов записей был архив.

Ещё можно обратить внимание на параметр Supparts. Он отвечает за то, какие поля будут отображены в разделе публикации статьи. Произвольные поля, комментарии и т.д. После всего этого нажимаем на кнопку «Add post type».

Регистрация нового типа поста закончена. Слева, в админ-панели, у вас появится новый пункт меню с названием созданного типа записи. В моём случае это «Мои стихи».

Как вывести произвольный тип записи

По умолчанию кастомные посты, после их создания, не будут отображаться на сайте. Они будут доступны только по прямой ссылке, к примеру, https://site.ru/verses. Окончание – это ярлык поста.

Следовательно, мы можем эту прямую ссылку вставить в меню через произвольные ссылки или вывести через виджет в сайдбаре.

Ещё можно сделать так, чтобы произвольные посты выводились на главной. Для этого просто вставьте этот код в файл functions.php.

//Произвольный тип записи. Вывод на главной
function cuspost_home_site( $query ) {
    if ( is_home() && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'ярлык_поста' ) );
    return $query;
}
add_action( 'pre_get_posts', 'cuspost_home_site' );

А для вывода в любом месте шаблонных файлах, используйте подобный код. Только укажите свой ярлык (slug) и любое количество постов на вывод.

<ul class="cuspost">
    <?php $the_query = new WP_Query( array(
    'posts_per_page' => 5,
    'post_type' => 'verses',//ярлык поста slug
        ) );?>
        
    <?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>
    <li>
    <a class="title" href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </li>
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>
        
</ul>

Шаблон для произвольного типа записи

Архив этого типа записей формируется по стандартному шаблону archive.php. А посты оформляются по шаблону single.php. Это значит, что мы можем создать свой шаблон для кастомных записей, следуя иерархии шаблонов.

Таким образом, можно свободно изменять внешний вид, структуру блоков на странице произвольных постов. Для создания шаблона скопируйте свой файл archive и переименуйте в archive-slug.php (slug – это ярлык ваших постов).

Дальше просто добавьте код, который ниже, и посмотрите результат. У кода есть пагинация. И не забудьте изменить slug на свой.

<?php get_header(); ?>
<div id="container" class="right_container">
<div id="content" class="content" role="main">

<?php
    $the_query = new WP_Query( array(
        'post_type' => 'verses',
        'paged' => $paged ) );
        
    if ( $the_query->have_posts() ) :
        while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
            <div class="cuspost">
                <a class="title" href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>
            </div>
    <?php endwhile;
        if (  $the_query->max_num_pages > 1 ) : ?>
            <div class="cusnavigation">
                <div class="nav-previous"><?php next_posts_link( __( '<span class="cusnav">&larr;</span> Предыдущая', 'domain' ) ); ?></div>
                <div class="nav-next"><?php previous_posts_link( __( 'Следующая <span class="cusnav">&rarr;</span>', 'domain' ) ); ?></div>
            </div>
        <?php endif;
    endif;
    wp_reset_postdata();
?>
</div>
 </div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

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

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *