Знаете, что общего у WordPress и шведского стола? Огромный выбор возможностей, где каждый берет то, что ему по вкусу. Но если вы до сих пор работаете только с постами и страницами, то поздравляю, вы как тот человек, который пришел в «шведку» и съел только хлеб. Сегодня я научу вас готовить полноценное блюдо из кастомных типов записей (CPT) и таксономий, чтобы вы могли создать свой шедевр.
Почему вообще заморачиваться?
Если вы думали, что WordPress — это просто платформа для блогов, то я уже на полпути к тому, чтобы спасти вас от этого заблуждения. Кастомные типы записей позволяют создавать всё что угодно: от портфолио для дизайнеров до базы данных для видеоигр. А таксономии помогут всё это разложить по полочкам. Это как в вашей квартире — с ними перестаёте путать носки с зарядками.
И вот тут начинается магия. Вы больше не ограничены стандартными «Записями» и «Страницами». Теперь у вас есть возможность сделать что-то уникальное. И да, это не так сложно, как может показаться.
Шаг первый: Освойте register_post_type
Итак, ребята, хватайте свой редактор кода, подключайтесь к вашему файлу functions.php
(или лучше создайте отдельный плагин, чтобы потом не искать причину своего кошмара после обновления темы).
Вот пример кода для создания кастомного типа записи:
function create_movie_post_type() {
register_post_type('movie',
array(
'labels' => array(
'name' => __('Фильмы'),
'singular_name' => __('Фильм'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'movies'),
'supports' => array('title', 'editor', 'thumbnail'),
)
);
}
add_action('init', 'create_movie_post_type');
Что здесь происходит?
register_post_type
— это ваш волшебный ключ, открывающий дверь в мир кастомных записей.labels
— подписи, которые видят пользователи и админ.public
— значит, запись будет доступна и в админке, и на сайте.has_archive
— позволит создать архив типаsite.com/movies
.supports
— указывает, какие элементы записи будут доступны (например, заголовок, текст, картинка).
Добавили? Проверьте в админке — должен появиться новый пункт меню «Фильмы».
Шаг второй: Наведи порядок с помощью таксономий
Теперь, когда у вас есть кастомный тип записи, не помешало бы как-то классифицировать данные. Представьте, у вас есть раздел с фильмами. Было бы круто добавлять жанры или актеров. Для этого у нас есть register_taxonomy.
function create_movie_taxonomy() {
register_taxonomy(
'genre',
'movie',
array(
'labels' => array(
'name' => __('Жанры'),
'singular_name' => __('Жанр'),
),
'hierarchical' => true,
'rewrite' => array('slug' => 'genre'),
)
);
}
add_action('init', 'create_movie_taxonomy');
Что здесь важно:
hierarchical
— если установитеtrue
, таксономия будет работать как категории (с древовидной структурой). Еслиfalse
— как теги.slug
— то, что вы увидите в URL.
Теперь у каждого фильма можно будет выбрать жанр. Стильно, удобно и никакого хаоса.
Шаг третий: Добавь магии в админку
Хотите, чтобы ваш клиент (или вы сами) не страдали от интерфейса? Добавьте в админку метабоксы. Например, чтобы указывать рейтинг фильма:
function add_movie_metabox() {
add_meta_box(
'movie_rating',
'Рейтинг фильма',
'movie_rating_callback',
'movie',
'side'
);
}
function movie_rating_callback($post) {
$value = get_post_meta($post->ID, '_movie_rating', true);
echo '<label for="movie_rating">Рейтинг (1-10): </label>';
echo '<input type="number" id="movie_rating" name="movie_rating" value="' . esc_attr($value) . '" min="1" max="10" />';
}
add_action('add_meta_boxes', 'add_movie_metabox');
function save_movie_rating($post_id) {
if (array_key_exists('movie_rating', $_POST)) {
update_post_meta(
$post_id,
'_movie_rating',
$_POST['movie_rating']
);
}
}
add_action('save_post', 'save_movie_rating');
Теперь у каждой записи типа «Фильм» в админке появится поле для указания рейтинга. Вы не только разрабатываете, но и уважаете тех, кто будет пользоваться вашим продуктом.
Шаг четвертый: Создайте кастомный вывод на фронтенде
Да, можно просто вывести всё через стандартный цикл WordPress. Но зачем быть посредственным, когда можно сделать красиво? Вот пример для вывода фильмов на странице:
$args = array(
'post_type' => 'movie',
'posts_per_page' => 10,
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
echo '<p>' . get_the_content() . '</p>';
echo '<p>Рейтинг: ' . get_post_meta(get_the_ID(), '_movie_rating', true) . '</p>';
}
wp_reset_postdata();
} else {
echo 'Фильмы не найдены.';
}
Этот код выводит 10 фильмов с их названием, описанием и рейтингом. Простенько, но со вкусом.
Итог: стань мастером кастомизации
Если вы хотите стать профи в 2024–2025 годах, забудьте о ленивых плагинах. Настоящие мастера пишут кастомный код, который выглядит чисто и работает как швейцарские часы. Да, вам придётся потратить время на обучение, но потом сможете гордо заявлять, что WordPress — это ваш холст, а не готовый шаблон.
Кастомные типы записей и таксономии — это не просто инструмент. Это ваш способ показать, что вы умеете создавать уникальный функционал. Так что хватайте клавиатуру и дерзайте. А если не получится — ну, всегда можно всё списать на глобальный заговор программистов.
Это потрясающий пост для всех пользователей Интернета. Они получат выгоду
от этого я уверен.