Что такое пользовательские типы записей в WordPress?
WordPress имеет два встроенных типа контента: “Статьи” и “Страницы”, но иногда этих стандартных типов недостаточно для удовлетворения потребностей сложной структуры сайта. Пользовательские типы статей (CPT) являются одной из основных функций WordPress, которая позволяет разработчикам создавать новые типы контента с независимой структурой данных, административным интерфейсом и логикой отображения. Вы можете рассматривать их как специально разработанные “контейнеры” для определенных типов контента, таких как продукты, портфолио, мероприятия, книги и т. д.
После включения CPT в административной панели WordPress появится отдельный пункт меню с функциями создания списка, редактирования и публикации, аналогичными тем, которые есть в стандартном модуле “Статьи”, но его данные будут полностью отделены от статей и страниц. Например, интернет-магазин может использовать стандартные “Статьи” для публикации блогов и одновременно создать CPT под названием “Продукты” для управления информацией о всех товарах. Они не будут мешать друг другу в административной панели, а на передней панели могут отображаться в совершенно разных стилях и макетах.
Короче говоря, CPT преодолевает ограничения WordPress как традиционной платформы для ведения блогов, позволяя гибко создавать новостные порталы, интернет-магазины, корпоративные веб-сайты, форумы сообществ и другие типы веб-сайтов без необходимости использования сложных сторонних плагинов, которые могут снизить производительность. Это ключевая технология для обеспечения четкой структуры контента и эффективного управления веб-сайтом.
Рекомендуемое чтение Обязательно для создания профессионального веб-сайта: полное руководство по разработке и настройке темы WordPress.。
Зачем использовать пользовательские типы статей?
В веб-разработке правильная организация контента — половина успеха. По мере того как контент веб-сайтов становится все более сложным, попытка уместить всю информацию в одну “статью” или “страницу” приводит к множеству проблем.
Во-первых, это удобство управления и обслуживания. Когда все элементы смешаны друг с другом, администратору веб-сайта крайне сложно найти конкретный элемент или выполнить массовые операции. Например, тип контента “Мероприятие” может иметь такие специализированные поля, как “Дата мероприятия”, “Место проведения мероприятия”, “Ссылка на регистрацию”, и очевидно, что управление ими вместе с обычными записями в блоге приведет к хаосу. Создание отдельных CPT для каждого типа контента позволит иметь специализированные интерфейсы для публикации, редактирования и фильтрации, что значительно повысит эффективность работы в административной панели.
Во-вторых, важна ясность и расширяемость структуры данных. Статьи и страницы в WordPress используют общие таблицы и поля данных. CPT позволяет определить уникальные поля для конкретных типов контента (с помощью плагинов Custom Fields или Advanced Custom Fields), которые можно более эффективно хранить, искать и извлекать. Например, для CPT “Фильм” можно добавить поля “Режиссёр”, “Продолжительность”, “Рейтинг” и т. д., которые невозможно эффективно структурировать и хранить в стандартных “Статьях”.
Кроме того, есть гибкость в части отображения на передней панели. Это достигается путем создания отдельных шаблонов для различных CPT (например, ). single-{cpt-slug}.php и archive-{cpt-slug}.phpБлагодаря этому вы полностью контролируете их отображение на переднем плане и можете создавать дизайн, который отличается от остальной части сайта, не прибегая к сложным условным операторам для изменения одного шаблона.
Наконец, речь идёт о производительности и оптимизации запросов. При выполнении запросов к базе данных поиск по определённым CPT (например, поиск всех предстоящих “мероприятий”) намного эффективнее, чем фильтрация по большой таблице, содержащей контент всех типов. Это помогает ускорить загрузку сайта и повысить его общую производительность. Это одна из лучших практик для повышения профессионализма и производительности сайтов WordPress на архитектурном уровне.
Рекомендуемое чтение Полное руководство по созданию веб-сайта: полный процесс и ключевые шаги по созданию профессионального веб-сайта с нуля до готового продукта.。
Как создать пользовательский тип статьи?
Существует два основных способа создания CPT: регистрация путём написания кода и использование специализированных плагинов.
Зарегистрируйтесь с помощью кода (рекомендуемый способ).
Для разработчиков это означает, что они могут создавать темы с помощью кода. functions.php Регистрация CPT в файле — это самый прозрачный и контролируемый способ. Это возможно благодаря функциям, предоставляемым WordPress. register_post_type() Функции. Этот метод позволяет связывать функции с темами или пользовательскими плагинами, что облегчает миграцию и предотвращает потерю данных в случае отключения плагина.
Ниже приведен полный пример кода для создания CPT под названием “Портфолио”:
function create_portfolio_post_type() {
$labels = array(
'name' => '作品集',
'singular_name' => '作品',
'menu_name' => '作品集',
'add_new' => '添加新作品',
'add_new_item' => '添加新作品',
'edit_item' => '编辑作品',
'new_item' => '新作品',
'view_item' => '查看作品',
'search_items' => '搜索作品',
'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' => 'portfolio' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-format-gallery',
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' )
);
register_post_type( 'portfolio', $args );
}
add_action( 'init', 'create_portfolio_post_type' );
Этот код выполняет $labels Массив определяет текст, отображаемый в фоновом интерфейсе, с помощью $args Массив определяет поведение CPT, например, возможность публичного доступа и правила перезаписи URL-адресов.slug Установить как portfolio), поддерживаемые функции (заголовок, редактор, изображения для акцентов и т. д.) и значки меню административной панели. В заключение используйте add_action() Хук, вызывающий функцию регистрации при инициализации WordPress.
Создание с помощью плагинов
Для пользователей, не знакомых с кодированием, существуют плагины, позволяющие быстро создавать и управлять CPT. Такие популярные плагины, как Custom Post Type UI и Toolset Types, предоставляют интуитивно понятный пользовательский интерфейс, позволяющий настраивать все параметры CPT, включая теги, параметры и даже пользовательскую таксономию, простым выбором соответствующих опций.
Преимущество подхода с плагинами заключается в том, что его легко освоить, и не требуется работать с кодом. Однако его недостаток заключается в том, что функциональность и производительность полностью зависят от плагинов. Если в будущем плагины перестанут обновляться или станут несовместимыми с основной версией WordPress, это может привести к рискам. Кроме того, функциональная логика сайта разбросана по плагинам, что затрудняет долгосрочное обслуживание и миграцию кода. Рекомендуется использовать этот подход на этапе быстрого прототипирования или в некритичных проектах.
Рекомендуемое чтение Руководство для начинающих по созданию веб-сайтов: полный процесс создания профессионального веб-сайта с нуля до готового продукта.。
Создание шаблона для настраиваемого типа статьи.
Просто создать CPT на заднем плане недостаточно. Чтобы его содержимое отображалось на переднем плане так, как вы хотите, необходимо создать для него соответствующие шаблоны темы. WordPress использует определённые правила иерархии шаблонов для поиска и вызова этих файлов.
Чтобы полностью контролировать своё портфолио CPT, вам потребуется создать как минимум два шаблона:
1. Шаблон страницы архива: используется для отображения списка всех работ. Название этого файла должно быть следующим: archive-portfolio.php И поместите его в свою тематическую папку. WordPress обеспечивает доступ к нему. yoursite.com/portfolio/ Когда это произойдет, этот шаблон будет использоваться в приоритетном порядке. Вы можете использовать его внутри. WP_Query Или используйте главный цикл, чтобы получить и вывести на экран все статьи типа “Портфолио”.
2. Шаблон для одной статьи: используется для отображения страницы с подробной информацией о конкретной работе. Назовите этот файл . single-portfolio.phpКогда вы посещаете yoursite.com/portfolio/your-work/ Когда это происходит, WordPress вызывает этот шаблон. Вы можете свободно разрабатывать его внутреннюю структуру и использовать пользовательские поля, определённые для этого CPT.
Вот что получилось. archive-portfolio.php Пример инфраструктуры:
\n
<section class="portfolio-archive">
<h1>Наши работы.</h1>
<div class="portfolio-items">
<article class="portfolio-item">
<a href="/ru/</?php the_permalink(); ?>">
<h2></h2>
</a>
<p></p>
</article>
</div>
<?php the_posts_pagination(); ?>
</section>
Создавая эти уникальные шаблоны, вы обеспечиваете своему контенту CPT собственный “внешний вид”, который отлично сочетается с другими разделами сайта, но при этом обладает своими особенностями.
Продвинутые функции и лучшие практики.
После успешной регистрации и демонстрации CPT вы можете ещё больше улучшить его с помощью некоторых расширенных функций и лучших практик.
Связанная настраиваемая таксономия.
Так же, как у “статей” есть “рубрики” и “теги”, у вашего CPT тоже может быть своя система рубрик. Например, можно создать рубрику “Типы проектов” для “портфолио” (используя <). register_taxonomy() Вы можете создать функцию, которая позволит вам разбивать работы на такие категории, как “веб-дизайн”, “брендинг”, “UI/UX”, что облегчит фильтрацию для фронт-энда и управление в бэк-энде.
Используйте расширенные пользовательские поля.
Стандартное окно редактирования статьи в WordPress не отвечает требованиям для ввода сложных данных. Интеграция таких плагинов, как Advanced Custom Fields (ACF) или Meta Box, позволит создать для вашего CPT интуитивно понятные группы полей, включая галереи изображений, селекторы, ссылки на связанные статьи, выбор даты и т. д. Это превратит ваш CPT из простого контейнера для статей в мощную систему ввода данных.
Переписать правила и установить постоянные ссылки.
Информация, указанная при регистрации в CPT. rewrite Параметры влияют на структуру URL. После создания CPT обязательно зайдите на страницу “Настройки” → “Постоянные ссылки” в административной панели WordPress и нажмите кнопку “Сохранить изменения”, чтобы обновить правила перезаписи и обеспечить работу новой структуры URL.
\nСоображения производительности
Избегайте добавления ненужных функций в CPT (например, комментариев, цитат). Используйте их разумно. WP_Query \n posts_per_page И механизм кэширования, особенно при выполнении запросов на большое количество записей CPT на странице списка. Для очень сложных связанных запросов рекомендуется использовать кэширование с помощью Transients API.
Код функции разделения.
Для производственной среды настоятельно рекомендуется переместить код, используемый для создания CPT, из темы в отдельный файл. functions.php Вынесите их из центра и поместите в отдельный “плагин настраиваемых функций”. Преимущество этого заключается в том, что даже если вы в будущем смените тему, эти определения CPT останутся, и данные не будут потеряны, что обеспечит разделение функциональности и внешнего вида.
резюме
Настраиваемые типы статей — это ключ к раскрытию огромного потенциала WordPress в области управления контентом. Они превращают WordPress из отлично работающей платформы для ведения блога в полнофункциональную систему управления контентом, позволяя создавать отдельные структуры данных и логику отображения для различных типов контента. Независимо от того, хотите ли вы создать портфолио, управлять каталогом продуктов, отображать список мероприятий или разрабатывать более сложные приложения, CPT предоставляет четкое, эффективное и легкое в обслуживании решение.
От регистрации с помощью кода или создания с помощью плагинов до разработки собственных шаблонов и расширения возможностей с помощью настраиваемых таксономий и расширенных полей — владение CPT означает, что вы сможете управлять WordPress более профессионально и гибко. Следуя лучшим практикам разделения функционального кода и темы, вы обеспечите долгосрочную поддержку и устойчивость структуры вашего сайта, заложив прочную основу для будущего развития.
Часто задаваемые вопросы
Влияют ли на скорость работы сайта пользовательские типы статей?
Разумное создание и использование пользовательских типов статей сами по себе не оказывают негативного влияния на скорость работы сайта. На самом деле, классификация контента может привести к более точным и эффективным запросам к базе данных, что, в свою очередь, может ускорить загрузку определённых страниц.
Факторы, влияющие на скорость, обычно связаны со сложностью запросов в шаблонах, написанных для CPT, наличием большого количества неоптимизированных изображений или использованием сложных связанных запросов без кэширования. Соблюдение лучших практик по производительности WordPress, таких как контроль количества запросов, использование разбивки на страницы, включение кэширования объектов и т. д., является ключом к поддержанию высокой скорости работы веб-сайта.
Если я удалю пользовательский тип статьи, будут ли потеряны статьи, содержащиеся в нём?
Это зависит от того, как вы его удалили. Если вы просто прокомментировали код регистрации CPT в коде или деактивировали плагин, создающий CPT, вы не увидите административное меню этого CPT в панели управления, но данные статей всё ещё будут храниться в базе данных WordPress. wp_posts В таблице базы данных есть только её post_type Значения полей (например, “портфолио”) больше не признаются ядром WordPress в качестве действительных открытых типов.
В этом случае вы можете восстановить доступ, изменив код и перерегистрировав CPT с тем же названием. В крайнем случае, вы также можете вручную найти эти статьи с помощью запроса в базе данных. post_type Измените его обратно на “запись” или “страницу”. Это важное предупреждение: перед внесением любых серьёзных структурных изменений (например, перед полным удалением типа записи) обязательно сделайте резервную копию базы данных.
Как добавить пользовательские поля для пользовательских типов статей?
Существует два основных способа добавления пользовательских полей в CPT. Первый — использовать встроенную панель “Пользовательские поля” в WordPress, но её интерфейс прост и функционал ограничен, поэтому она не подходит для сложных задач. Второй и рекомендуемый способ — использовать сторонние плагины для управления полями, такие как Advanced Custom Fields (ACF) или Meta Box.
Эти плагины предоставляют интуитивно понятный интерфейс, позволяющий создавать группы полей (например, “Информация о продукте”) и назначать их определённым типам записей (например, “Продукт”). Затем вы можете увидеть эти удобные поля для ввода данных на странице редактирования этого типа записей. В шаблонах для фронтальной части сайта используются функции, предоставляемые плагинами (например, ). get_field()Эти поля можно легко получить и отобразить, просто вызвав функцию \n).
Можно ли использовать пользовательские типы статей вместе с шаблонами страниц?
Да, но это две разные, но совместимые функции. Шаблоны страниц используются для выбора различного макета для одной “страницы”, а шаблоны CPT используются для управления логикой отображения всего типа контента. Вы можете создать “шаблон страницы” для конкретной статьи определённого типа контента.
Например, у вас есть участник CPT, шаблон которого по умолчанию выглядит следующим образом: single-member.phpВы можете создать файл под названием page-template-leadership.php Сначала выберите шаблон страницы, а затем внесите изменения. WP_Query В WordPress можно найти “членов” на определённых должностях в CPT и отобразить их с помощью макета этого шаблона. В административной панели необходимо создать новую страницу и выбрать для неё этот пользовательский шаблон. Это демонстрирует гибкость системы шаблонов WordPress.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Подробный анализ хостинга на основе совместного использования ресурсов: преимущества, недостатки и рекомендации по выбору наиболее подходящих сценариев применения
- Введение для новичков в WordPress: с нуля создание вашего первого профессионального сайта
- Подробный анализ платформы WooCommerce: создание мощного электронного магазина на WordPress с нуля
- Подробный анализ плагина для выделения кода в WordPress: от установки и настройки до продвинутых приемов
- Полное руководство по настройке пользовательских шаблонов страниц товаров в WooCommerce