Регистрация пользовательского типа записи в WordPress
Функция register_post_type()
позволяет создать новый тип записи или изменить уже существующий. Важно использовать эту функцию во время события инициализации (hook init
). Если вы попытаетесь зарегистрировать тип записи до этого события, он может не сработать должным образом.
Создание нового типа записи
Имя для нового типа записи должно быть уникальным и не совпадать с уже существующими именами таксономий или типов записи. Также не используйте зарезервированные имена WordPress.
Важно: После создания нового типа записи вам нужно перейти в админку на страницу "Настройки" → "Постоянные ссылки". Это необходимо для обновления пользовательских URL для созданного типа записи.
С версии 4.6 в WordPress была добавлена новая класс WP_Post_Type
, и с тех пор функционал функции register_post_type()
теперь обрабатывается этим классом.
Таксономии
Если вы создаете таксономии для нового типа записи, обязательно указывайте их при регистрации типа записи с помощью параметра taxonomies
. Не указав это, типы записи и таксономии могут не распознаваться как связанные на необходимых хуках.
Таксономии нужно регистрировать отдельно. Например, последовательность должна быть такой:
register_taxonomy( ... );
register_post_type( ... );
Это поможет вам избежать ошибок и сэкономить время.
Пример использования
add_action( 'init', 'register_custom_post_types' );
function register_custom_post_types() {
register_post_type( 'book', [
'labels' => [
'name' => 'Книги',
'singular_name' => 'Книга',
'add_new' => 'Добавить книгу',
'edit_item' => 'Редактировать книгу',
'new_item' => 'Новая книга',
'view_item' => 'Посмотреть книгу',
'search_items' => 'Поиск книг',
'not_found' => 'Книги не найдены',
],
'public' => true,
'has_archive' => true,
'rewrite' => true,
'supports' => [ 'title', 'editor', 'author', 'thumbnail' ], // Поддерживаемые функции
'taxonomies' => [ 'genre' ], // Если у вас есть таксономия 'genre'
]);
}
Параметры функции
Функция register_post_type()
имеет несколько параметров, которые можно настроить. Вот наиболее важные:
- public — определяет, доступен ли тип записи для общего доступа.
- supports — массив поддерживаемых функций (заголовок, контент и пр.).
- rewrite — используется для настройки пользовательских URL.
- has_archive — если
true
, с��здается архив для этого типа записи.
Примеры основных параметров
label
— название типа записи.labels
— массив с разными текстовыми метками для админки.description
— краткое описание типа записи.hierarchical
— еслиtrue
, записи могут иметь иерархию (похожие на страницы).
Примечание
Помните, что после регистрации нового типа записи, вам нужно обновить правила перезаписи URL через админ-панель WordPress. Это можно сделать, просто перейдя на соответствующую страницу в настройках.
Пример сообщение об обновлении записи
add_filter( 'post_updated_messages', 'my_update_messages' );
function my_update_messages( $messages ) {
global $post;
$messages['book'] = [
1 => sprintf('Книга обновлена. Посмотреть книгу', esc_url(get_permalink($post->ID))),
6 => sprintf('Книга опубликована. Перейти к книге', esc_url(get_permalink($post->ID))),
];
return $messages;
}
Этот код позволяет настроить сообщения для пользователя после обновления или создания нового типа записи.
Заключение
Функция register_post_type()
— это мощный инструмент для создания пользовательских типов записей в WordPress. Правильная регистрация и настройка параметров поможет вам организовать контент вашего сайта более эффективно.