Создание собственных типов записей (Custom Post Types, CPT) — один из самых мощных способов расширить функциональность WordPress. Вместо стандартных записей и страниц вы можете создавать уникальные типы контента, которые лучше подходят под задачи вашего сайта. В этой статье рассмотрим, как быстро и правильно добавить собственный тип записи с помощью популярного и гибкого плагина Meta Box.
Почему стоит использовать Meta Box для создания собственных типов записей?
Meta Box — это бесплатный и расширяемый плагин, который позволяет создавать не только типы записей, но и настраиваемые поля, метабоксы и даже таксономии. Он хорошо документирован и имеет множество дополнений для самых разных случаев. В сравнении с ручным прописыванием CPT в файлах темы, Meta Box упрощает разработку и делает код более читаемым и поддерживаемым.
Кроме того, Meta Box позволяет легко добавлять пользовательские поля к типам записей, что особенно полезно, если нужно хранить дополнительные данные, например, адреса, даты, номера телефонов и пр.
Установка и базовая настройка Meta Box
Для начала установим плагин. В админке WordPress выберите Плагины > Добавить новый, найдите Meta Box и установите его. После активации можно приступать к созданию собственного типа записи.
Для примера создадим тип записи «Книги» для сайта библиотеки или книжного магазина.
Создание типа записи «Книги» с помощью Meta Box
Добавим следующий код в файл functions.php вашей темы или в отдельный плагин:
function wp_puzzle_register_cpt_books() {
$labels = array(
'name' => 'Книги',
'singular_name' => 'Книга',
'menu_name' => 'Книги',
'name_admin_bar' => 'Книга',
'add_new' => 'Добавить новую',
'add_new_item' => 'Добавить новую книгу',
'new_item' => 'Новая книга',
'edit_item' => 'Редактировать книгу',
'view_item' => 'Просмотреть книгу',
'all_items' => 'Все книги',
'search_items' => 'Искать книги',
'parent_item_colon' => 'Родительские книги:',
'not_found' => 'Книги не найдены.',
'not_found_in_trash' => 'В корзине книги не найдены.'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'books'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'supports' => array('title', 'editor', 'thumbnail', 'excerpt')
);
register_post_type('wp_puzzle_books', $args);
}
add_action('init', 'wp_puzzle_register_cpt_books');Этот код регистрирует новый тип записи с названием «Книги» и необходимыми параметрами, такими как поддержка миниатюр, редактора и т.д.
Добавление настраиваемых полей к типу записи с Meta Box
Одна из сильных сторон Meta Box — удобное создание метабоксов с полями. Например, для книги полезно добавить поля «Автор», «Год издания» и «ISBN».
Создадим метабокс с этими полями. В functions.php добавьте:
function wp_puzzle_register_meta_boxes( $meta_boxes ) {
$meta_boxes[] = array(
'id' => 'book_details',
'title' => 'Детали книги',
'post_types' => array('wp_puzzle_books'),
'context' => 'normal',
'priority' => 'high',
'fields' => array(
array(
'id' => 'author',
'name' => 'Автор',
'type' => 'text',
),
array(
'id' => 'year',
'name' => 'Год издания',
'type' => 'number',
'min' => 1500,
'max' => date('Y'),
),
array(
'id' => 'isbn',
'name' => 'ISBN',
'type' => 'text',
),
),
);
return $meta_boxes;
}
add_filter('rwmb_meta_boxes', 'wp_puzzle_register_meta_boxes');Этот код использует фильтр rwmb_meta_boxes плагина Meta Box для добавления нового блока с тремя полями. После сохранения записи данные будут автоматически сохранены и доступны в админке.
Вывод собственных полей в шаблоне темы
Чтобы вывести данные из метаполей на сайте, используйте функцию rwmb_meta, предоставляемую Meta Box. Пример вывода в шаблоне single-wp_puzzle_books.php:
<?php
$author = rwmb_meta('author');
$year = rwmb_meta('year');
$isbn = rwmb_meta('isbn');
?>
<h2><?php the_title(); ?></h2>
<p><strong>Автор:</strong> <?php echo esc_html($author); ?></p>
<p><strong>Год издания:</strong> <?php echo esc_html($year); ?></p>
<p><strong>ISBN:</strong> <?php echo esc_html($isbn); ?></p>
<div><?php the_content(); ?></div>Так вы сможете красиво отобразить все данные книги на отдельной странице.
Полезные советы и расширения
Используйте таксономии для категорий книг
Для удобной фильтрации книг можно добавить собственные таксономии, например «Жанр» или «Издательство». Meta Box поддерживает регистрацию таксономий через параметры.
Автоматизация и импорт данных
Если нужно импортировать много записей, можно написать скрипт, который будет создавать записи и заполнять метаполя через функции WordPress и Meta Box. Это удобно для миграции или массового обновления.
Интеграция с плагинами WPShop
Если вы используете на сайте WPShop, рекомендую обратить внимание на плагин WPRemark для создания отзывов к книгам, а также ABC Pagination для удобной навигации по спискам книг.
Итог
Добавление собственного типа записи через Meta Box — это простой и гибкий способ сделать ваш сайт на WordPress более функциональным и удобным для пользователей. Используйте метаполя для расширения информации о контенте и не забывайте про удобство вывода данных в шаблонах. Meta Box поможет сэкономить время и сделать код чистым и понятным.