Как создать пользовательский тип записи WordPress программно

Опубликовано: 2021-10-05

Вы хотите публиковать пользовательские типы сообщений на своем сайте? Мы вас прикрыли. В этом руководстве мы научим вас программно создавать настраиваемые типы записей WordPress с помощью небольшого количества кода.

Изначально WordPress создавался для публикации постов. Однако по прошествии стольких лет WordPress — это гораздо больше, чем платформа для публикации постов. В настоящее время это наиболее полное веб-решение, на котором работает почти 40% всех веб-сайтов.

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

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

Что такое настраиваемый тип записи?

Пользовательские типы сообщений — это типы контента. WordPress по умолчанию поставляется с несколькими типами записей. Записи и страницы самые известные, но есть и другие:

  • Сообщения
  • Страницы
  • Вложения
  • Меню навигации
  • Редакции
  • Индивидуальный CSS
  • Наборы изменений

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

Лучшим примером пользовательского типа записи являются продукты WooCommerce. Когда вы впервые активируете WooCommerce, плагин создает настраиваемый тип записи под названием «Продукты». Как только вы начинаете создавать продукты, они публикуются как тип сообщения о продукте со всеми улучшениями, которые предлагает WooCommerce.

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

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

Почему и когда вы должны использовать пользовательский тип записи?

Пользовательские типы сообщений (CPT) могут сильно различаться в зависимости от того, как они построены, поэтому вы можете использовать их для достижения всех видов решений.

Вы можете использовать настраиваемые типы сообщений, когда:

  • Вы собираетесь регулярно публиковать определенную информацию, которую вы не можете публиковать, используя тип сообщений по умолчанию.
  • Нужно отличать определенный тип постов от стандартных.
  • Необходимо изменить поведение некоторых типов сообщений
  • Хотите настроить функции поста, процесс публикации и элементы или применить к ним какую-то специальную функцию

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

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

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

Как создать пользовательский тип записи WordPress программно

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

На панели инструментов перейдите в « Внешний вид» > «Редактор тем», откройте файл functions.php дочерней темы в правом столбце и вставьте следующий скрипт. Он зарегистрирует пользовательский тип записи под названием « фильмы» .

 функция QuadLayers_custom_post_type() {
// Установить метки пользовательского интерфейса для пользовательского типа записи
    $метки = массив(
        'name' => _x('Фильмы', 'Общее название типа записи', 'витрина'),
        'singular_name' => _x('Фильм', 'Тип сообщения в единственном числе', 'витрина'),
        'menu_name' => __('Фильмы', 'витрина'),
        'parent_item_colon' => __('Родительский фильм', 'витрина'),
        'all_items' => __('Все фильмы', 'витрина'),
        'view_item' => __('Просмотр фильма', 'витрина'),
        'add_new_item' => __('Добавить новый фильм', 'витрина'),
        'add_new' => __('Добавить новый', 'витрина'),
        'edit_item' => __('Редактировать фильм', 'витрина'),
        'update_item' => __('Обновить фильм', 'витрина'),
        'search_items' => __('Поиск фильма', 'витрина'),
        'not_found' => __('Не найдено', 'витрина'),
        'not_found_in_trash' => __('Не найдено в корзине', 'витрина'),
    );
// Установить другие параметры для пользовательского типа записи
    $аргументы = массив(
        'label' => __('фильмы', 'витрина'),
        'description' => __( 'Новости и обзоры кино', 'витрина' ),
        'метки' => $метки,  
        'supports' => array( 'название', 'редактор', 'отрывок', 'автор', 'миниатюра', 'комментарии', 'редакции', 'настраиваемые поля', ),     
        'таксономии' => массив ('жанры'),     
        'иерархический' => ложь,
        'общедоступный' => правда,
        'show_ui' => правда,
        'show_in_menu' => правда,
        'show_in_nav_menus' => правда,
        'show_in_admin_bar' => правда,
        'меню_позиция' => 5,
        'can_export' => правда,
        'has_archive' => правда,
        'exclude_from_search' => ложь,
        'public_queryable' => правда,
        'capability_type' => 'сообщение',
        'show_in_rest' => правда, 
    );
    // Регистрация вашего пользовательского типа записи
    register_post_type('фильмы', $args);
}
add_action('init', 'QuadLayers_custom_post_type', 0);

После вставки кода на панели администратора WordPress появится новая вкладка под названием « Фильмы ».
Создать пользовательский тип записи программно

Если вы откроете его, вы увидите, что редактор сообщений такой же, как и типы сообщений по умолчанию, потому что мы установили те же аргументы для экрана редактора сообщений. Итак, как мы узнаем, что это пользовательский редактор типов сообщений? Потому что в URL-адресе и заголовке страницы вы можете увидеть тип поста «Фильмы».

Добавить пользовательский тип записи

Теперь, когда вы увидели конечный результат, давайте проанализируем код, чтобы лучше понять, что делает каждый раздел.

Объяснение кода

Мы только что увидели, как программно создать пользовательский тип записи WordPress. Но это только половина того, что вам нужно знать. Если вы хотите создавать свои собственные типы сообщений, вам необходимо настроить код. А для этого нужно понимать, что делает каждая часть сниппета.

Мы используем wp_init() , чтобы гарантировать, что наша функция запускается один раз: при запуске WordPress. В нашей QuadLayers_custom_post_type() есть три части.

1) Этикетки

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

$labels = array(
'name' => _x( 'Movies', 'Post Type General Name', 'storefront' ),
);

2) Опции

Это некоторые предопределенные параметры, которые определяют поведение и некоторые другие функции нашего пользовательского типа записи ( фильмы ).

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

  • 'supports': определяет, какие компоненты будут использоваться в редакторе записей.
  • «таксономии»: вы можете применить одну или несколько существующих категорий или пользовательских категорий ко всем CPT, зарегистрированным в текущей функции.
  • ' 'иерархический' : посты не могут иметь родительский контент, и это будет отличать CPT от страниц. Установите для этого параметра значение true, если вы хотите опубликовать пользовательскую страницу вместо пользовательского типа сообщения.
  • ' show_in_admin_bar': отображает вкладку CPT на панели администратора WordPress.

Полный список всех аргументов и их описание см. в этой документации.

3) Регистрация пользовательского типа сообщения

Функция WordPress register_post_type() , наконец, зарегистрирует наш новый пользовательский тип записи и настроит его так, чтобы он был готов к использованию.

Теперь, когда вы лучше понимаете код, вы можете начать публиковать свои собственные типы сообщений. Но помимо их публикации, вы захотите где-нибудь отобразить свой CPT. Давайте посмотрим, как это сделать.

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

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

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

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

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

 add_shortcode('фильмы', 'QuadLayers_display_cpt_shortcode');
функция QuadLayers_display_cpt_shortcode(){
    $args = array('post_type' => 'фильмы', 'posts_per_page' => 10);
    $the_query = новый WP_Query($args);
    если ($the_query->have_posts()):
    в то время как ($the_query->have_posts()): $the_query->the_post();
    $c= the_title( sprintf( '<h2 class="entry-title">', esc_url(get_the_title() ) ), '</h2>').
    '<div class="entry-content">'.
    контент().
    '</дел>';
конец;
wp_reset_postdata();
еще:
$c = 'Извините, нет сообщений, соответствующих вашим критериям.';
конец;
вернуть $с;
}

Итак, если вы разместите шорткод на странице:

шорткод для отображения CTP

Вы увидите результат:

пользовательский тип поста с шорткодом

Вывод

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

В этом руководстве мы показали вам, как программно создать собственный тип записи WordPress. Мы проанализировали фрагмент и описали каждый раздел, чтобы вы могли настроить его и использовать на своем сайте. Кроме того, мы увидели, как создать собственный шорткод, который позволяет отображать ваши пользовательские типы сообщений в любом месте вашего сайта.

Пробовали ли вы создавать собственные типы сообщений на своем сайте? Сообщите нам свой опыт в разделе комментариев.

Чтобы настроить другие области вашего сайта, ознакомьтесь со следующими руководствами:

  • Как добавить настраиваемые поля загрузки в WooCommerce
  • Как добавить настраиваемые поля в кассу
  • Руководство по редактированию полей оформления заказа WooCommerce