18.02.2025
Создание плагина для WordPress: Добавление нового типа записей с выводом шаблонов страниц и категорий
WordPress — это мощная CMS, которая предоставляет разработчикам возможность расширять функциональность сайта с помощью плагинов. Одним из таких расширений может быть создание нового типа записей (Custom Post Type), который позволит организовать контент более гибко. В этой статье мы рассмотрим, как создать плагин, который добавит новый тип записей, а также настроит вывод соответствующих шаблонов для страниц и категорий.
Шаг 1: Создание базовой структуры плагина
Для начала создадим файл плагина. Пусть он будет называться custom-post-type-plugin.php
. Этот файл должен находиться в папке плагина, например, /wp-content/plugins/custom-post-type-plugin/
.
<?php
/**
* Plugin Name: Custom Post Type Plugin
* Description: Плагин для создания нового типа записей с выводом шаблонов страниц и категорий.
* Version: 1.0
* Author: Ваше имя
*/
if (!defined('ABSPATH')) {
exit; // Защита от прямого доступа к файлу
}
Шаг 2: Регистрация нового типа записей
Для регистрации нового типа записей используется функция register_post_type()
. Мы создадим тип записей под названием book
, который будет представлять книги.
Добавьте следующий код в файл плагина:
function cptp_register_book_post_type() {
$labels = array(
'name' => __('Книги', 'cptp'),
'singular_name' => __('Книга', 'cptp'),
'menu_name' => __('Книги', 'cptp'),
'name_admin_bar' => __('Книга', 'cptp'),
'add_new' => __('Добавить новую', 'cptp'),
'add_new_item' => __('Добавить новую книгу', 'cptp'),
'new_item' => __('Новая книга', 'cptp'),
'edit_item' => __('Редактировать книгу', 'cptp'),
'view_item' => __('Просмотреть книгу', 'cptp'),
'all_items' => __('Все книги', 'cptp'),
'search_items' => __('Поиск книг', 'cptp'),
'not_found' => __('Книг не найдено', 'cptp'),
'not_found_in_trash' => __('В корзине книг не найдено', 'cptp'),
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'books'),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt'),
'menu_icon' => 'dashicons-book',
);
register_post_type('book', $args);
}
add_action('init', 'cptp_register_book_post_type');
Объяснение:
labels
: Определяет текстовые метки для типа записей.public
: Делает тип записей доступным для публичного просмотра.has_archive
: Включает архивную страницу для типа записей.rewrite
: Задает URL-структуру (например,example.com/books/
).supports
: Определяет, какие функции поддерживаются (заголовок, редактор, миниатюра и т.д.).
Шаг 3: Регистрация таксономии для категорий
Чтобы организовать книги по категориям, добавим таксономию genre
(жанр).
function cptp_register_genre_taxonomy() {
$labels = array(
'name' => __('Жанры', 'cptp'),
'singular_name' => __('Жанр', 'cptp'),
'search_items' => __('Поиск жанров', 'cptp'),
'all_items' => __('Все жанры', 'cptp'),
'parent_item' => __('Родительский жанр', 'cptp'),
'parent_item_colon' => __('Родительский жанр:', 'cptp'),
'edit_item' => __('Редактировать жанр', 'cptp'),
'update_item' => __('Обновить жанр', 'cptp'),
'add_new_item' => __('Добавить новый жанр', 'cptp'),
'new_item_name' => __('Название нового жанра', 'cptp'),
'menu_name' => __('Жанры', 'cptp'),
);
$args = array(
'hierarchical' => true, // Как категории
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'genre'),
);
register_taxonomy('genre', array('book'), $args);
}
add_action('init', 'cptp_register_genre_taxonomy');
Объяснение:
hierarchical
: Указывает, что таксономия является иерархической (как категории).rewrite
: Задает URL-структуру для таксономии (например,example.com/genre/fantasy/
).
Шаг 4: Создание шаблонов для вывода
WordPress автоматически использует шаблоны из темы для отображения типов записей и таксономий. Однако, если вы хотите использовать собственные шаблоны, их нужно создать в папке вашей темы или дочерней темы.
1. Шаблон для одной записи (single-book.php
)
Создайте файл single-book.php
в папке вашей темы:
<?php
get_header();
while (have_posts()) : the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1><?php the_title(); ?></h1>
</header>
<div class="entry-content">
<?php the_content(); ?>
</div>
</article>
<?php
endwhile;
get_footer();
2. Шаблон для архива записей (archive-book.php
)
Создайте файл archive-book.php
:
<?php
get_header();
if (have_posts()) :
while (have_posts()) : the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div><?php the_excerpt(); ?></div>
</article>
<?php
endwhile;
else :
echo '<p>Записей нет.</p>';
endif;
get_footer();
3. Шаблон для таксономии (taxonomy-genre.php
)
Создайте файл taxonomy-genre.php
:
<?php
get_header();
$term = get_queried_object();
?>
<h1>Жанр: <?php echo esc_html($term->name); ?></h1>
<?php
if (have_posts()) :
while (have_posts()) : the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div><?php the_excerpt(); ?></div>
</article>
<?php
endwhile;
else :
echo '<p>Записей в этом жанре нет.</p>';
endif;
get_footer();
Шаг 5: Активация плагина
- Перейдите в админ-панель WordPress.
- Перейдите в раздел “Плагины” → “Установленные плагины”.
- Найдите плагин “Custom Post Type Plugin” и активируйте его.
Теперь у вас есть новый тип записей “Книги” с возможностью добавления категорий (жанров). Вы можете создавать новые записи, назначать им жанры и просматривать их на сайте.
Заключение
Создание плагина для нового типа записей в WordPress — это мощный инструмент для организации контента. С помощью этого руководства вы научились регистрировать тип записей, добавлять таксономии и создавать шаблоны для их отображения. Теперь вы можете адаптировать этот код под свои нужды, добавляя дополнительные функции, такие как пользовательские поля или фильтры.
Если у вас возникнут вопросы или потребуется помощь, не стесняйтесь обращаться!