Что такое пользовательские типы записей в WordPress?
WordPress по умолчанию предоставляет два типа контента: “Статьи” (Articles) и “Страницы” (Pages). Однако при создании сложных веб-сайтов этого зачастую бывает недостаточно. Для решения таких задач используются пользовательские типы статей (Custom Post Types, сокращенно CPTs). CPTЭто одна из ключевых функций WordPress, которая позволяет разработчикам создавать совершенно новые типы контента с собственной структурой данных и интерфейсом для управления в режиме администрирования. Можно рассматривать это как своего рода “шаблон контента”, предназначенный для работы с конкретными типами информации.
Например, сайт с рецензиями на фильмы может использовать стандартный тип статей для публикации новостей, а также создать пользовательский тип статей под названием “Фильм”, предназначенный для хранения информации о фильмах. Каждая статья о фильме может включать специальные поля, такие как имя режиссера, актеры, оценки и т. д. Интернет-магазин может создать тип статей под названием “Товар”, а школьный сайт – типы статей “Курс” или “Учитель”. Такой подход позволяет эффективно организовывать и хранить информацию в соответствии с конкретными потребностями сайта. CPTРазличные типы контента стали четко разделены, что позволяет более эффективно управлять данными и создает прочную основу для дальнейшей настройки шаблонов и расширения функционала.
Как создать пользовательский тип статьи?
В WordPress существует два основных способа создания пользовательских типов статей: регистрация с использованием кода и применение плагинов. Для разработчиков крайне важно владение методом регистрации с использованием кода, поскольку он обеспечивает наибольшую гибкость и контроль, а также упрощает управление версиями пользовательских типов статей в темах или отдельных плагинах.
Рекомендуемое чтение Полное освоение пользовательских типов статей в WordPress: от создания до продвинутого применения в практике。
Регистрация пользовательских типов статей с помощью кода
Самым стандартным и рекомендуемым способом является использование темы (theme) для оформления интерфейса. functions.php Используется в файле или в качестве отдельного функционального плагина. register_post_type Функция производит регистрацию. Она принимает два параметра: идентификатор пользовательского типа статьи (slug) и массив, содержащий все необходимые параметры.
Ниже приведен пример создания пользовательского типа статьи под названием “Фильм”:
function create_movie_post_type() {
$labels = array(
'name' => '电影',
'singular_name' => '电影',
'menu_name' => '电影管理',
'add_new_item' => '添加新电影',
'edit_item' => '编辑电影',
'view_item' => '查看电影',
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'movie' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-video-alt',
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
);
register_post_type( 'movie', $args );
}
add_action( 'init', 'create_movie_post_type' ); Этот код выполняет add_action Хаки („hooks“) выполняются во время инициализации WordPress. create_movie_post_type Функция. Внутри этой функции определено отображение меток (тегов). $labels и основные параметры $argsКлючевыми параметрами являются:public Управление отображением информации в фоновом режиме и на главном экране.rewrite Определим правила переопределения URL-адрес: при обращении по ссылке на отдельный фильм будет использоваться другой URL-адрес. yoursite.com/movie/some-movie;has_archive Решение о том, следует ли создавать архивные страницы (например…) yoursite.com/movie/);supports Массив определяет функции, поддерживаемые данным типом контента: заголовки, редакторы, изображения и т. д.
Использование плагинов для создания пользовательских типов статей
Для пользователей, не знакомых с программированием, плагины являются отличным выбором для быстрого освоения работы с системой. Custom Post Type UI и Toolset Types – это два очень популярных плагина. Они обеспечивают интуитивно понятный пользовательский интерфейс, позволяющий определять параметры объектов данных (постов) путем выбора соответствующих опций и заполнения форм. CPT Различные атрибуты, такие как метки, уровень доступности (публичность), поддерживаемые функции и т. д.
Создание элементов интерфейса с использованием плагинов является простым и быстрым способом, однако это обычно приводит к дополнительным запросам к базе данных, а настройки плагинов зависят от самих плагинов. При переносе сайта на другой хост или при проведении крупных обновлений могут понадобиться дополнительные действия для сохранения настроек пользовательских типов статей. Поэтому для производственной среды или проектов, требующих долгосрочного обслуживания, использование кода для реализации необходимых функций является более предпочтительным вариантом.
Рекомендуемое чтение Руководство по разработке тем для WordPress: создание высокопроизводительных пользовательских тем с нуля。
Для добавления пользовательских полей к пользовательским типам статей
Сам тип статьи предоставляет лишь структурную основу для хранения данных. Чтобы в нем могли быть сохранены уникальные сведения (например, дата выхода фильма или имя режиссера), необходимо использовать пользовательские поля (Custom Fields) или более мощные инструменты для настройки структуры данных – такие как пользовательские мета-поля (Meta Boxes). В WordPress есть встроенная панель для управления пользовательскими полями, однако ее интерфейс недостаточно удобен для использования пользователей, работающих с контентом.
Использование плагина для работы с расширенными пользовательскими полями
Плагин Advanced Custom Fields (ACC) является стандартом отрасли для работы с пользовательскими полями. Он позволяет настраивать пользовательские поля для различных типов статей с помощью графического интерфейса. CPTСоздавайте различные типы групп полей, такие как текстовые поля, поля для вставки изображений, выпадающие списки, поля для задания связей между элементами данных и т. д.
Например, для слова “фильм”.” CPT Создайте группу полей, включающую поля “Режиссер”, “В главных ролях” и “Год выхода”. После установки и активации плагина ACF перейдите на его страницу настроек, создайте новую группу полей и установите правило расположения таким образом, чтобы эта группа отображалась только для статей типа “Фильм”. Затем добавьте в группу поля “Режиссер” (текстовое поле), “В главных ролях” (поле для ввода текста) и “Год выхода” (числовое поле). После сохранения настроек при редактировании информации о фильмах в системе появятся соответствующие интуитивно понятные поля для ввода данных.
Создание пользовательского мета-окна с помощью кода
Если вы хотите полностью контролировать процесс с помощью кода, вы можете разработать собственные решения для этой цели. CPT Разработка пользовательских мета-боксов предполагает использование API мета-боксов WordPress, а также функций для их сохранения. Хотя объем кода может быть довольно велик, это позволяет получить полную свободу настройки.
Ниже приведен упрощенный пример того, как добавить поле “Режиссер” для записей о фильмах:
// 1. 添加元框
function add_movie_director_meta_box() {
add_meta_box(
'movie_director_meta_box', // 元框ID
'导演信息', // 元框标题
'render_movie_director_meta_box', // 回调函数,用于输出HTML
'movie', // 目标文章类型
'side', // 位置
'default' // 优先级
);
}
add_action( 'add_meta_boxes', 'add_movie_director_meta_box' );
// 2. 渲染元框内容
function render_movie_director_meta_box( $post ) {
// 获取已保存的值
$director = get_post_meta( $post->ID, '_movie_director', true );
// 添加安全字段
wp_nonce_field( 'movie_director_nonce_action', 'movie_director_nonce' );
// 输出HTML
echo '<label for="movie_director">导演姓名:</label>';
echo '<input type="text" id="movie_director" name="movie_director" value="' . esc_attr( $director ) . '" style="width:100%;" />';
}
// 3. 保存元框数据
function save_movie_director_meta_data( $post_id ) {
// 检查nonce、权限、自动保存等
if ( ! isset( $_POST['movie_director_nonce'] ) || ! wp_verify_nonce( $_POST['movie_director_nonce'], 'movie_director_nonce_action' ) ) {
return;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// 保存数据
if ( isset( $_POST['movie_director'] ) ) {
update_post_meta( $post_id, '_movie_director', sanitize_text_field( $_POST['movie_director'] ) );
}
}
add_action( 'save_post', 'save_movie_director_meta_data' ); Этот код создает мета-блок, который размещается в боковой панели и содержит поле для ввода имени режиссера. При сохранении данных используются стандартные процедуры проверки безопасности WordPress, включая… nonce Проверка, проверка прав доступа и предотвращение повторной обработки при автоматическом сохранении. Сохраненные данные проходят определенные процедуры обработки. update_post_meta Функции хранятся… wp_postmeta В таблице.
Рекомендуемое чтение Руководство по использованию плагина WooCommerce: полное руководство от установки и настройки до управления магазином。
Создание шаблонного файла для пользовательского типа статей
Создано. CPT После заполнения контента необходимо предоставить шаблон для его отображения на пользовательском интерфейсе. WordPress использует систему иерархии шаблонов и автоматически находит соответствующий файл шаблона для отображения вашего контента.
Шаблон для одной статьи
Когда пользователь заходит на страницу с информацией о конкретном фильме (например, yoursite.com/movie/inceptionПри создании новой страницы или обновлении существующей WordPress ищет файлы шаблонов в следующем порядке:
1. single-movie.php (Наиболее конкретно)
2. single.php
3. singular.php
4. index.php
Следовательно, лучшей практикой является создание в вашей папке с тематическими материалами файла с названием… single-movie.php Это файл, в котором вы можете полностью настроить способ отображения фильма, используя ранее созданные пользовательские поля.
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
<header class="entry-header">
<h1 class="entry-title"></h1>
<div class="entry-meta">
<span>导演:</span>
</div>
</header>
<div class="entry-content">
<!-- 显示其他自定义字段,如主演、上映年份 -->
<p><strong>В главных ролях:</strong><?php the_field( 'lead_actor' ); ?></p>
<p><strong>Год выхода в прокат:</strong><?php the_field( 'release_year' ); ?></p>
</div>
</article> Если используется плагин ACF, можно воспользоваться его предоставляемыми возможностями. the_field() Функция позволяет удобно выводить значения полей. Если поля сохранены с использованием пользовательского кода, то для их отображения также применяется этот пользовательский код. get_post_meta() Функция.
Шаблон страницы архива
Когда пользователь заходит на страницу с списком фильмов (например… yoursite.com/movie/Когда это происходит, WordPress ищет следующее:
1. archive-movie.php
2. archive.php
3. index.php
Создать archive-movie.php В этом файле вы можете использовать циклы WordPress для отображения всех фильмов, а также настроить параметры запроса или включить функцию разделения страниц на страницы (пагинирование).
<h1>фильмовая библиотека</h1>
<article>
<h2><a href="/ru/</?php the_permalink(); ?>"></a></h2>
<?php the_post_thumbnail( 'medium' ); ?>
<p>导演:</p>
</article>
<?php endwhile; the_posts_navigation(); else : ?>
<p>В настоящее время нет никаких фильмов доступных для просмотра.</p> резюме
Овладение возможностями создания пользовательских типов статей в WordPress является важным шагом на пути от простого блога к созданию современного веб-сайта с разнообразными функциями и четкой структурой. Начните с использования… register_post_type Процесс включает несколько этапов: сначала функция занимается регистрацией кода, затем через плагин ACF или пользовательские мета-фильтры добавляются специальные поля, и наконец, в соответствии с структурой шаблона создаются индивидуальные элементы интерфейса. single-{cpt}.php и archive-{cpt}.php Шаблонные файлы; весь этот процесс образует целостную систему (или структуру). CPT Разработка рабочего процесса.
Благодаря практическому опыту мы создали тип контента “Фильм”, который обладает отдельным меню в бэкенде, специальными полевами данных и пользовательски настроенным интерфейсом для отображения информации. Такой подход может быть без проблем применен к созданию контента любого типа – “Продуктов”, “Альбомов работ”, “Мероприятий” и т. д. Понимание и применение этих принципов значительно повысит ваши навыки как разработчиков WordPress, позволяя создавать для пользователей действительно индивидуальные, персонализированные цифровые решения.
Часто задаваемые вопросы
В чем разница между пользовательскими типами статей (custom article types) и пользовательскими системами классификации (custom classification systems)?
Кастомные типы статей предназначены для определения новых типов контента, таких как “фильмы” или “продукты”. Кастомные системы классификации (например, теги или расширения каталогов) используются для сортировки и организации контента. Один кастомный тип статьи может быть связан с несколькими кастомными системами классификации. Например, тип статьи “фильм” может включать в себя различные теги, характеризующие его содержание (жанр, режиссер, год выпуска и т. д.). CPT Можно связать два пользовательских критерия классификации: “Тип” (действие, комедия) и “Регион” (китайский язык, Голливуд).
Мне следует регистрировать CPT (Custom Post Type) в файле functions.php темы или в отдельном плагине?
Это зависит от сложности проекта и требований к его портативности. В случае компонентов, тесно связанных с конкретной тематикой и не подлежащих повторном использовании… CPTМожно разместить это в разделе, посвящённом теме. functions.php Да. Однако лучшей практикой считается создание отдельного функционального плагина, в котором хранится весь код регистрации пользовательских типов статей и систем классификации. Благодаря этому, даже при смене темы, эти типы контента и их данные останутся доступны, что позволяет лучше разделить функциональные аспекты сайта (его возможности) от его внешнего вида (дизайна).
Как изменить структуру постоянных ссылок для существующих пользовательских типов статей?
Вы можете зарегистрироваться здесь. CPT Время проходит… rewrite Настройки параметров также можно использовать после регистрации. register_post_type_args Необходимо внести изменения в настройки фильтра. После этого перейдите в панель настроек WordPress (Settings) → Permalinks, затем один раз нажмите кнопку “Save Changes” (Сохранить изменения), чтобы обновить правила переадресации. В противном случае новая структура ссылок может не вступить в силу.
Почему я не вижу свой собственный пользовательский тип статей на главной странице сайта?
Обычно это происходит из-за неправильной настройки параметров регистрации. Пожалуйста, сначала проверьте функцию регистрации. $args В массиве 'public' и 'publicly_queryable' Были ли все параметры установлены? trueВо-вторых, необходимо убедиться, что… 'show_ui' и 'show_in_nav_menus' Также… trueНаконец, проверьте файл шаблона (template file).single-{cpt}.php или archive-{cpt}.phpБыл ли файл правильно создан и находится ли он в корневом каталоге темы мероприятия?
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Значение и ценность WordPress
- Полное руководство по работе с WooCommerce на китайском языке: создание вашего онлайн-магазина с нуля
- Почему стоит выбрать WooCommerce для создания вашего интернет-магазина?
- 7 рекомендуемых плагинов для повышения производительности сайтов на WordPress
- Полное руководство по созданию сайтов на WordPress: от нуля до мастерства – создание профессиональных веб-сайтов