Типы сообщений WordPress: полное руководство
Опубликовано: 2021-02-16Если вы относитесь к тому типу разработчиков WordPress, которые очень заботятся о дизайне и организации, пришло время полностью понять типы сообщений WordPress.
Как вы хорошо знаете, не все сайты WordPress - это простые блоги. Часто разработчикам требуется нечто большее, чем простые стандартные страницы и сообщения. Им необходимо иметь возможность добавлять совершенно новые типы контента.
Но как лучше всего разбить стеклянный потолок дизайна и разработки WordPress, оставив при этом пользователю отличный UX?
Ответ можно найти в типах записей WordPress и пользовательских типах записей WordPress.
Изучая, понимая и реализуя весь потенциал типов сообщений WordPress, вы превратите свою административную область в захватывающее, организованное и персонализированное место, которое полностью соответствует вашим требованиям.
Типы записей WordPress позволяют дизайнерам легко организовывать контент, позволяя создавать новые корзины для размещения ваших уникальных типов контента.
Но что именно это означает и с чего начать?
Что может сделать использование настраиваемых типов записей WordPress для общего UX вашего сайта?
Давайте разберемся.
Что такое типы сообщений WordPress?
В самом базовом масштабе тип сообщения WordPress работает так же, как знакомые сообщения и страницы в вашей административной области.
По умолчанию ядро WordPress содержит несколько различных типов контента, которые разделены на типы записей. Один из этих типов контента называется публикацией. Однако это только один из многих стандартных типов записей в WordPress.
Когда вы используете ядро WordPress, оно автоматически будет содержать следующие типы записей, каждый из которых хранится в таблице wp_posts вашей базы данных WordPress:
- Страницы
- Сообщения
- Редакции
- Вложения
- Пользовательские CSS
- Меню навигации
- Наборы изменений
У каждого из этих типов сообщений есть поля редактора и заголовка, как вы привыкли к обычным страницам и сообщениям.
И когда вы создадите собственный тип сообщения, который мы покажем вам в этом руководстве, он появится в вашем меню администратора WordPress, как и стандартные типы сообщений WordPress.
После того, как вы реализовали настраиваемый тип сообщения WordPress, вы сможете добавлять в него контент так же, как вы это делаете, когда вы добавляете новый фрагмент содержимого блога в раздел своих сообщений.
Однако с типами сообщений WordPress вы можете сделать так, чтобы эти типы сообщений выполняли гораздо больше, чем стандартные сообщения и страницы. Вы также можете настроить, как интерфейс вашего сайта отображает контент вашего типа для пользователей сайта.
Новый тип сообщения может быть любым, каким вы хотите его видеть. В зависимости от тематики вашего сайта это могут быть такие вещи, как:
- Дома
- Отзывы
- Примеры из практики
- Фильмы
- Вдохновляющие цитаты
- И т.п.
Функциональность типа записей WordPress делает возможными любой новый тип контента.
Конечно, есть плагины, которые помогут вам создавать типы записей WordPress. Но вам не обязательно нужно, чтобы плагин имел такой контроль над дизайном и функциональностью вашего сайта.
Если вам нужен полный контроль над своим дизайном и пользовательским интерфейсом, лучшим вариантом будет создание собственных пользовательских типов сообщений.
Позже в этом руководстве мы предложим плагин для тех из вас, кто предпочитает этот вариант для создания пользовательских типов записей WordPress.
Но лучший способ зарегистрировать, добавить или создать тип сообщения WordPress - это закодировать его прямо в тему вашего сайта. Это делается с помощью функции регистрации записей WordPress.
Используя эту функцию, вы можете сразу же добавлять контент в корзину нового типа и отображать ее на своем сайте.
Более того, для начала потребуется всего лишь добавить пять строк кода.
Взгляните на пользовательские типы записей WordPress
Теперь, когда у вас есть базовое представление о типах сообщений WordPress и пользовательских типах сообщений, пришло время немного запачкать руки.
Для начала выполните следующие действия, чтобы создать новый тип сообщения:
- Войдите в свою админку.
- Откройте редактор кода и файл functions.php вашей темы.
- Добавьте пять строк кода, показанных ниже, в верхнюю часть файла functions.php.
- Обновите браузер.
- Проверьте меню администратора WordPress в разделе «Комментарии», чтобы найти новый пункт меню типа публикации.
- Удалите постоянные ссылки.
Вот код, который нужно добавить:
<?php
add_action( 'init', function() {
$label = 'Books';
$type = 'book';
register_post_type( $type, [ 'public' => true, 'label' => $label ] );
});
Теперь у вас должен быть новый тип сообщения.
Но что на самом деле вы можете сделать с новым типом сообщений?
Возможности типов сообщений WordPress и настраиваемых типов сообщений WordPress
Чтобы по-настоящему разобраться в типах постов, давайте рассмотрим один конкретный пример создания нового веб-сайта-портфолио, который должен содержать список тематических исследований.
Для этого мы зарегистрируем новый тип сообщений для управления каждым из тематических исследований.
Используя стандартную тему Twenty Twenty WordPress по умолчанию, мы начнем с добавления в тему нашего типа публикации Study.
Сначала откройте файл functions.php темы Twenty Twenty в редакторе кода. Здесь вы будете писать свой код типа сообщения.
Новый тип сообщения должен быть зарегистрирован в верхней части файла functions.php. Это делается с помощью хука инициализации WordPress с использованием add_action (). Когда вы используете функцию register_post_type для добавления типа сообщения, она не будет работать должным образом без хука инициализации.
Затем начните с трех аргументов для register_post_type:
- Общедоступный - это означает установку типа сообщения, чтобы каждый мог получить к нему доступ.
- Описание - это не так часто, но все же хорошо иметь.
- Ярлык - это аргумент, который мы расширим чуть позже.
<?php
add_action( 'init', function() {
$type = 'study';
$label = 'Studies';
$arguments = [
'public' => true, // Allow access to post type
'description' => 'Case studies for portfolio.', // Add a description
'label' => $label // Set the primary label
];
register_post_type( $type, $arguments);
});
Убедитесь, что вы сбрасываете постоянные ссылки каждый раз, когда вносите изменения.
Настройка меток типа сообщений
WordPress по умолчанию помечает новый тип сообщения как публикацию в админке вашего сайта. Но вы можете захотеть, чтобы метки были помечены как новый тип публикации под названием Study, а не Post.
Чтобы переопределить метки по умолчанию для типа публикации, вам нужно будет вызвать их вручную.
Чтобы правильно установить метки, создайте новую функцию, которая компилирует метки, не загромождая ваш регистрационный код типа сообщения.
Просто добавьте в свою тему следующую функцию, чтобы ее можно было использовать в процессе регистрации типа сообщения:
<?php
function xcompile_post_type_labels($singular = 'Post', $plural = 'Posts') {
$p_lower = strtolower($plural);
$s_lower = strtolower($singular);
return [
'name' => $plural,
'singular_name' => $singular,
'add_new_item' => "New $singular",
'edit_item' => "Edit $singular",
'view_item' => "View $singular",
'view_items' => "View $plural",
'search_items' => "Search $plural",
'not_found' => "No $p_lower found",
'not_found_in_trash' => "No $p_lower found in trash",
'parent_item_colon' => "Parent $singular",
'all_items' => "All $plural",
'archives' => "$singular Archives",
'attributes' => "$singular Attributes",
'insert_into_item' => "Insert into $s_lower",
'uploaded_to_this_item' => "Uploaded to this $s_lower",
];
}
Затем в коде регистрации вам нужно будет вызвать только что созданную функцию xcompile_post_type_labels (). Используйте его для своих ярлыков, затем проверьте свою админку.
<?php
add_action( 'init', function() {
$type = 'study';
// Call the function and save it to $labels
$labels = xcompile_post_type_labels('Study', 'Studies');
$arguments = [
'public' => true,
'description' => 'Case studies for portfolio.',
'labels' => $labels // Changed to labels
];
register_post_type( $type, $arguments);
});
Как все выглядит так далеко?
Значок и положение меню для настраиваемых типов сообщений WordPress
С тех пор, как были представлены WP Dashicons, стало очень легко добавлять значки меню в типы сообщений.
Для этого сначала установите аргумент menu_icon на имя Dashicon. В этом примере мы будем использовать значок компьютерного стола, используя значение dashicons-desktop.
<?php
add_action( 'init', function() {
$type = 'study';
$labels = xcompile_post_type_labels('Study', 'Studies');
$arguments = [
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop', // Set icon
'labels' => $labels
];
register_post_type( $type, $arguments);
});
Теперь, если вы хотите изменить расположение пункта меню, используйте аргумент menu_position. Этот аргумент будет принимать значение, начинающееся с 0 и заканчивающееся 100. Выбранное значение будет перечислять пункт меню выше или ниже в основе меню, со значением 0 вверху и 100 внизу.
Теперь мы должны добавить изображение к новому типу сообщения.
Как включить и отключить избранное изображение, заголовок и редактор
Чтобы добавить или изменить поля формы администратора по умолчанию для вашего типа сообщения, такие как Featured Image, Title и Editor, используйте аргумент set supports.
Есть много опций, которые вы можете включать и выключать, используя аргумент поддержки типа сообщения. Они есть:
- Поле заголовка
- редактор
- Коробка автора
- Миниатюра (избранное изображение)
- Отрывок
- Обратные ссылки
- Настраиваемые поля
- Комментарии
- Редакции
- Атрибуты страницы
- Пост-форматы
Для вашего нового типа публикации Study вы можете переопределить параметры WordPress по умолчанию и добавить свое собственное избранное изображение, применив параметр эскиза.
Перед тем как сделать это, убедитесь, что вы включили поддержку тем для миниатюр сообщений. Это делается с помощью функции add-theme-support.
Для использования функции поддержки требуется всего несколько дополнительных строк кода, и это позволит включить показанное изображение.
<?php
// Add theme support for featured image / thumbnails
add_theme_support('post-thumbnails');
add_action( 'init', function() {
$type = 'study';
$labels = xcompile_post_type_labels('Study', 'Studies');
// Declare what the post type supports
$supports = ['title', 'editor', 'revisions', 'page-attributes', 'thumbnail'];
$arguments = [
'supports' => $supports, // Apply supports
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop',
'labels' => $labels,
];
register_post_type( $type, $arguments);
});
Не многие дизайнеры или разработчики WordPress так глубоко разбираются в пользовательских типах записей WordPress. Сейчас хорошее время, чтобы немного похлопать себя по плечу.
Иерархия настраиваемых типов записей WordPress
Хотя в записях WordPress не могут быть дочерние записи, в Pages могут. Дочерний элемент страницы считается подстраницей.
При желании вы можете настроить пользовательские типы записей WordPress с использованием иерархии, например Pages, с помощью аргумента иерархии.
В нашем примере с типом сообщения "Исследования" нам это не обязательно понадобится. Но если вам это нужно для вашего конкретного проекта, используйте следующий код:
<?php
add_action( 'init', function() {
$type = 'study';
$labels = xcompile_post_type_labels('Study', 'Studies');
// Declare what the post type supports
$supports = ['title', 'editor', 'revisions', 'page-attributes', 'thumbnail'];
$arguments = [
'hierarchical' => false, // Do not use hierarchy
'supports' => $supports,
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop',
'labels' => $labels,
];
register_post_type( $type, $arguments);
});
Как включить REST API для нового типа сообщения
REST API навсегда изменил WordPress. Таким образом, вы хотите, чтобы ваш новый тип публикации имел доступ ко всем новейшим функциям WordPress, таким как Gutenberg.
Включить REST API для новых пользовательских типов записей WordPress так же просто, как установить для аргумента show_in_rest значение true.

Когда REST API включен, ваш новый тип сообщения начнет использовать Gutenberg (если он также поддерживает редактор).
<?php
add_action( 'init', function() {
$type = 'study';
$labels = xcompile_post_type_labels('Study', 'Studies');
// Declare what the post type supports
$supports = ['title', 'editor', 'revisions', 'page-attributes', 'thumbnail'];
$arguments = [
'show_in_rest' => true, // Enable the REST API
'hierarchical' => false,
'supports' => $supports,
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop',
'labels' => $labels,
];
register_post_type( $type, $arguments);
});
Когда вы включите REST API в WordPress, вы также сможете получить доступ к новому типу записи как к объекту JSON через определенные конечные точки WordPress.
Чтобы просмотреть конечную точку для типа сообщения REST, используйте этот / wp-json / wp / v2 / study.
Чтобы изменить базовое имя типа сообщения в URL-адресе на учебу вместо учебы, используйте аргумент rest_base.
<?php
add_action( 'init', function() {
$type = 'study';
$labels = xcompile_post_type_labels('Study', 'Studies');
// Declare what the post type supports
$supports = ['title', 'editor', 'revisions', 'page-attributes', 'thumbnail'];
$arguments = [
'rest_base' => 'studies', // Change the REST base
'show_in_rest' => true,
'hierarchical' => false,
'supports' => $supports,
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop',
'labels' => $labels,
];
register_post_type( $type, $arguments);
});
И точно так же API установлен, и Гутенберг включен для типа сообщения.
Как добавить Гутенберга в пользовательские типы записей WordPress
Помните, что Гутенберг не может быть включен для пользовательских типов сообщений, если он не поддерживает редактор и не включен REST API.
После включения, чтобы добавить Гутенберга к вашему типу сообщения, нам нужно на секунду забыть о нашем типе сообщения Study и создать новый тип сообщения, который мы назовем статьей.
Мы будем использовать тип публикации статьи, чтобы включить Gutenberg.
<?php
add_action( 'init', function() {
$type = 'article';
$labels = xcompile_post_type_labels('Article', 'Articles');
$arguments = [
'rest_base' => 'articles',
'show_in_rest' => true, // Required for Gutenberg
'supports' => ['editor'], // Required for Gutenberg
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop',
'labels' => $labels,
];
register_post_type( $type, $arguments);
});
Вы заметите, что вам нужно добавить два аргумента Гутенберга:
'show_in_rest' => true,
'supports' => ['editor'],
Как удалить Гутенберга из пользовательских типов сообщений WordPress
Если вы хотите удалить Гутенберга из одного из ваших типов сообщений, просто добавьте обработчик действия use_block_editor_for_post_type в файл functions.php вашей темы.
Это делается с помощью следующего кода:
<?php
add_filter('use_block_editor_for_post_type', function($enabled, $post_type) {
// List of post types to remove
$remove_gutenberg_from = ['study'];
if (in_array($post_type, $remove_gutenberg_from)) {
return false;
}
return $enabled;
}, 10, 2);
Это принудительно отключает Гутенберга от типа поста.
Обратите внимание, что не каждый из ваших пользовательских типов сообщений WordPress должен быть включен с помощью Gutenberg. Бывают случаи, когда вы можете использовать классический редактор WordPress с типами сообщений.
Функция отключения Gutenberg также пригодится, когда тип сообщения должен быть доступен из REST API.
В таких случаях отключение Гутенберга - это то направление, в котором вы захотите двигаться.
Включение архивов и настройка внешнего интерфейса
Наконец-то мы подошли к тому моменту, когда пришло время заняться нашим внешним интерфейсом пользовательских сообщений WordPress.
Есть три вещи, которые вам нужно сделать, если вы хотите настроить список содержимого пользовательского типа записей WordPress:
- Включить аргумент has_archive.
- Установите в заголовке правил перезаписи форму множественного числа от имени вашего типа сообщения. В случае с примером этого руководства его необходимо изменить на «исследования».
- Удалите постоянные ссылки.
<?php
add_action( 'init', function() {
$type = 'study';
$labels = xcompile_post_type_labels('Study', 'Studies');
// Declare what the post type supports
$supports = ['title', 'editor', 'revisions', 'page-attributes', 'thumbnail'];
$arguments = [
'rewrite' => [ 'slug' => 'studies' ] // Change the archive page URL
'has_archive' => true, // Enable archive page
'rest_base' => 'studies',
'show_in_rest' => true,
'hierarchical' => false,
'supports' => $supports,
'public' => true,
'description' => 'Case studies for portfolio.',
'menu_icon' => 'dashicons-desktop',
'labels' => $labels,
];
register_post_type( $type, $arguments);
});
Теперь, когда все это готово, пора приступить к тематическому оформлению вашего пользовательского типа публикации. На данный момент мы будем использовать тему Twenty Twenty по умолчанию. Конечно, вы можете использовать любую понравившуюся тему.
Шаблон настраиваемого типа сообщения WordPress
Прежде чем мы создадим шаблон для нашего пользовательского типа записи, давайте сначала посмотрим на иерархию шаблонов WordPress.
Если вы еще не знакомы с тем, как WordPress работает с шаблонами, думайте об этом как о том, как CSS обрабатывает специфичность. Хотя не слишком важно увлекаться деталями, эта простая аналогия поможет вам лучше понять иерархию шаблонов WordPress.
В иерархии шаблонов для нашего нового типа публикаций «Исследование» есть два специальных файла, на которые следует обратить внимание.
Они есть:
1. single-study.php - это одна страница, когда пользователь переходит на http://yourcoolsite.com/studies/your-cool-study-post, чтобы просмотреть отдельное исследование.
2. archive-study.php - это страница архива, когда пользователь переходит на http://yourcoolsite.com/studies, чтобы просмотреть список всех исследований.
WordPress по умолчанию будет использовать шаблоны single.php и archive.php вашей темы для внешнего дизайна пользовательских типов сообщений. Однако, когда существует определенный шаблон для пользовательских типов сообщений, single-study.php и archive-study.php переопределяют значения по умолчанию в WordPress.
Одна страница
Поскольку в этом руководстве мы используем тему WordPress Twenty Twenty по умолчанию, нам сначала нужно создать имя файла single-study.php и работать с ним.
В файл шаблона одного типа записи добавьте этот цикл WordPress:
<?php
/**
* The template for displaying single posts and pages.
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package WordPress
* @subpackage Twenty_Twenty
* @since 1.0.0
*/
get_header();
?>
<main id="site-content" role="main">
<?php
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
}
}
?>
</main><!-- #site-content -->
<?php get_template_part( 'template-parts/footer-menus-widgets' ); ?>
<?php get_footer(); ?>
Архивная страница
Страница архива для типа сообщения использует тот же процесс, что и отдельная страница. Единственное отличие состоит в том, что вы будете использовать шаблон archive-study.php, а не single-study.php.
Для страницы архива вы хотите, чтобы она содержала ссылку на каждое исследование и показывала только заголовок «Исследование».
Конечно, не стесняйтесь получать удовольствие от этого кода:
<?php
/*
Template Name: Archive-Study
*/
get_header(); ?>
<div id="container">
<div id="content" role="main">
<?php the_post(); ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php get_search_form(); ?>
<h2>Archives by Month:</h2>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
<h2>Archives by Subject:</h2>
<ul>
<?php wp_list_categories(); ?>
</ul>
</div><!-- #content -->
</div><!-- #container -->
<?php get_footer(); ?>
Теперь, когда ваша страница архива находится на своем месте, похоже, что все готово. Но что произойдет, если у вас будет сто или более тематических исследований?
Как изменить запрос страницы архива
На страницах архива будет указано только количество элементов, указанное администратором в разделе «Настройки»> «Чтение». Часто вам не нужно, чтобы к настраиваемым типам сообщений применялись те же ограничения, что и к вашему основному блогу или ленте статей.
Если вы хотите снять ограничение на странице архива, просто измените основной запрос с помощью хука pre_get_posts.
После того, как вы подключитесь к pre_get_posts, вы сможете получить доступ и изменить основной объект WP_Query.
Чтобы разместить все исследования на странице архива, вам необходимо:
- Используйте хук pre_get_posts.
- Определите, является ли метод is_main_query тем, что выполняет основной запрос.
- Определите, находитесь ли вы на странице архива исследований, используя is_post_type_archive.
- В основном WP_Query установите для posts_per_page значение -1. Это снимает все ограничения числа и перечисляет все.
<?php
add_action('pre_get_posts', function( WP_Query $query ) {
if($query->is_main_query() && $query->is_post_type_archive('study')) {
$query->set('posts_per_page', -1);
}
});
Используя ловушку pre_get_posts, вы получаете прямой доступ к SQL-запросу, который уже выполняется WordPress. Запрос дает вам доступ к сообщениям, страницам и вашим пользовательским типам сообщений без написания SQL.
Это всегда бонус.
Использование плагина для настраиваемых типов сообщений WordPress

Если вы не из тех, кто копается в коде и предпочитаете создавать и изменять свои пользовательские типы сообщений с помощью плагина, пользовательский интерфейс пользовательского типа сообщений предоставляет простой в использовании интерфейс для регистрации и управления пользовательскими типами сообщений (и таксономиями).
Плагин имеет высокий рейтинг и настроен для работы с версиями WordPress 5.5 и выше.
Проверено до 5.6.
Использование генератора для настраиваемых типов сообщений WordPress
Хотите действительно простой способ получить код для пользовательских типов сообщений (или таксономий)? Проверьте GenerateWP. Вы можете использовать GenerateWP для создания широкого спектра настраиваемого кода. Это тоже довольно просто. Просто заполните правильную форму и получите код для копирования / вставки.
Вы даже можете увидеть обучающий веб-семинар о настраиваемых типах сообщений, проведенный несколько лет назад, в котором использовался GenerateWP. Хорошая новость в том, что пользовательские типы сообщений существуют так давно, что обучение по-прежнему актуально.
Типы сообщений WordPress - ваш новый лучший друг
Независимо от того, работаете ли вы с типами записей WordPress вручную или с помощью плагина, чрезвычайно важно, чтобы ваш сайт был оснащен лучшим из доступных плагинов резервного копирования WordPress.
Редактирование кода всегда может вызвать конфликты, которые могут направить ваш сайт в нежелательном направлении.
В таких случаях на помощь придут BackupBuddy и iThemes Security, мощный плагин безопасности WordPress, который вернет вас к работе.
AJ обладает более чем двадцатилетним опытом работы и разработки членских сайтов с широким кругом клиентов.
