Что представляют собой произвольные типы записей?
WordPress хранит и выводит контент в виде записей (постов), которые классифицируются по своим типам. Страница на WordPress сайте имеет тип записей «page», а пост в блоге имеет тип «post». Некоторые типы записей в WordPress являются предопределенными. Среди них:
- Post (запись)
- Page (страница)
- Attachment (вложение)
- Revision (ревизия)
- Navigation Menu (навигационное меню)
- Custom CSS (произвольный CSS-код)
- Changesets (наборы изменений)
Произвольный тип записей – это определенный произвольным образом тип контента. Вы можете задавать новые типы записей для любого контента. Новый тип записей регистрируется в WordPress как произвольный тип записей. Произвольный пост – это обычный пост, имеющий иное значение post_type в базе данных WordPress. Примеры произвольных типов записей:
- Media (медиафайлы)
- People (люди)
- Products (продукты)
- Events (события)
- Places (места)
- Online Store (онлайн-магазин)
- Testimonials (рекомендации)
- Quotes (цитаты)
- Error Log (журнал ошибок)
Зачем нужны произвольные типы записей
Произвольные типы записей позволяют вводить и отображать содержимое тем или иным образом, специфичным для данного контента. Вам не нужно привязываться только лишь к встроенным типам записей, имеющимся в WordPress. Произвольные типы записей позволяют хранить любой тип информации. Пользователь получает доступ к бесконечному набору возможностей.
Итак, в каких случаях стоит создавать произвольный тип записей? Если вы хотите вывести контент, который не подходит для вывода в качестве обычной записи или страницы. Или вам может потребоваться добавить некоторые опции к записям, такие как имена, фотографии, email адреса, телефонные номера и т.д. Возможно, вам нужно, чтобы все записи выводились в одной и той же разметке и выглядели одинаково на сайте. В качестве примера давайте рассмотрим добавление пунктов меню для сайта ресторана. Пункты меню должны иметь общую разметку, но при этом отличаться от обычных записей наличием дополнительных возможностей.
Если вы по-прежнему не понимаете, когда следует использовать произвольные типы записей, изучите рекомендации ниже:
- Вы публикуете различные типы контента, такие как советы, записи в блоге и т.д.
- Вы хотите разделить определенные типы контента по структуре и способу вывода. К примеру, блог и портфолио.
- Вы имеете контент, который не должен выводиться в хронологическом порядке – к примеру, руководства по стилям.
- Вы имеете изолированный тип контента, который может быть перемещен на новый сайт, оставаясь понятным. К примеру, список проданных товаров.
- Ваш контент не является комплексным и не требует использования рубрик и меток. К примеру, обзоры фильмов.
Плагины для произвольных типов записей в WordPress
Самый простой подход по созданию произвольных типов записей в WordPress – использование плагина. Этот способ безопасен и прост для новичков. Есть несколько доступных плагинов, которые упрощают создание произвольных типов записей и демонстрируют фантастический результат. Ниже приведен список плагинов, которые стоит попробовать.
Custom Post Type UI
Плагин Custom Post Type UI обеспечивает простой в использовании интерфейс для создания произвольных типов записей и таксономий в WordPress.
Плюсы:
- Интуитивный и подробный интерфейс, простой в использовании
- Вы можете добавлять произвольные типы записей к встроенным или произвольным таксономиям
- Поддержка различных функций редактора записей
- Отдельный список произвольных типов записей и таксономий, зарегистрированных через плагин
Минусы:
- Плагин просто создает произвольные типы записей, которые затем вам нужно самостоятельно добавлять в темы.
- Плагину недостает описания сложных возможностей.
- В плагине нет встроенной возможности для добавления произвольных полей
Toolset Types – Custom Post Types, Custom Fields and Taxonomies
Плагин Toolset Types позволяет вам добавлять типы контента, произвольные поля и таксономии.
Плюсы:
- Поддержка расширенных возможностей произвольных типов записей
- Управление доступом к полям, которые могут редактировать и просматривать пользователи
- Плагин выводит подсказки по сложным возможностям
- Можно создавать отношения «родительский элемент – дочерний элемент» между любыми произвольными и родными типами
- Предложен экспорт и импорт для данных плагина
- Плагин мультиязычный
- Все поля можно повторять
Минусы:
- Плагин Toolset Types не слишком удобен в работе, поскольку произвольные типы записей и произвольные поля представлены на разных экранах панели администратора
Custom Post Types and Custom Fields creator – WCK
WCK Custom Post Type Creator – плагин для создания произвольных типов записей, обеспечивающий удобный интерфейс с поддержкой большинства аргументов функции register_post_type().
Плюсы:
- Простой интерфейс, один из самых понятных плагинов в своей категории.
- Плагин позволяет создавать и поддерживать произвольные типы записей, таксономии и произвольные поля, а также мета-поля для записей, страниц и произвольных типов записей.
- Имеется краткое руководство по началу работы в разделе General Settings
- Доступна PRO версия плагина с дополнительными функциями и особенностями.
Минусы:
- Много опций, которые доступны только в PRO версии
Custom Post Type Maker
Custom Post Type Maker – плагин, позволяющий создавать произвольные типы записей и таксономии с максимальным удобством. Он полностью интегрирован с WordPress API и обеспечивает поддержку практически всех параметров Custom Post Type API.
Плюсы:
- Продуманный интерфейс с отдельными секциями Post Types и Taxonomies
- Имеется интерфейс для управления произвольными типами записей, такими как обычные записи и страницы
- Предлагает все необходимые возможности, характерные для плагинов из данной категории
- Позволяет задавать практически все параметры Custom Post Type API.
Минусы:
- Плагин не обрабатывает вывод произвольных типов записей и таксономий.
- Плагин не обновлялся довольно долгое время. Таким образом, он не слишком широко используется на сайтах.
CPT-onomies: Using Custom Post Types as Taxonomies
CPT-onomies – плагин для задания произвольных типов записей, совместимый с мультисайтами в WordPress. С помощью плагина можно создавать мощные таксономии и отношения между записями.
Плюсы:
- Позволяет использовать произвольные типы записей как таксономии
- Позволяет создавать отношения между записями
- Менеджер позволяет создавать произвольные типы записей и регистрировать таксономии без дополнительного кодирования
- Поддерживает регистрацию других произвольных типов записей, создаваемых плагинами и темами
- Поддерживает мультисайты. Можно регистрировать произвольные типы записей и таксономии по всей сети или только для определенных сайтов.
Минусы:
- На данный момент далеко не все возможности таксономий реализованы в плагине
MB Custom Post Type
MB Custom Post Type – плагин, позволяющий создавать произвольные типы записей и таксономии, легко управляя ими. Плагин имеет понятный интерфейс.
Плюсы:
- Плагин поддерживает все аргументы типа post, и вам не нужно писать PHP-код
- Плагин легкий, мощный и удобный в использовании
- Поддерживает режим live-редактирования, который автоматически заполняет все необходимые метки
- Поддержка импорта/экспорта для зарегистрированных типов записей
- Может быть расширен при помощи аддонов
Минусы:
- Нужно ставить плагин MetaBox
Custom Post Type Generator
Плагин позволяет генерировать произвольные типы записей из консоли WordPress. Простое и понятное в использовании решение.
Плюсы:
- Простой интерфейс
- Позволяет генерировать PHP-код для включения произвольных типов записей и таксономий в темы и плагины
- Отдельно выводит произвольные типы записей, встроенные типы и поддерживаемые темой типы
Минусы:
- Зарегистрированные типы записей и таксономии не выводятся в списке редактируемых объектов в интерфейсе
Бонус: Pods – Custom Content Types and Fields
Pods – плагин, который позволяет создавать практически любой тип контента вне зависимости от его сложности. Удобный интерфейс дает возможность управлять произвольными полями и типами контента.
Плюсы:
- Интуитивный интерфейс
- Самое богатое в плане опций и надежное решение для произвольных типов записей.
- Вы можете создавать новые типы контента: произвольные типы записей, произвольные таксономии, страницы настроек и т.д.
- Вы можете добавлять произвольные поля к произвольным таксономиям.
- Вы можете создавать расширенные типы контента, которые будут использовать свои собственные таблицы в БД
- Можно расширять уже существующие типы контента, такие как типы записей, таксономии, медиа, пользователи, комментарии.
Минусы:
- Сложный для новичка, даже учитывая детальную документацию
Ручное создание произвольного типа записей
Следует отметить, что произвольные типы записей пропадут, если вы отключите плагин. Данные, относящиеся к произвольным типам записей, при этом сохранятся. Однако произвольный тип записей будет незарегистрированным и недоступным из панели администратора.
Давайте посмотрим на альтернативные способы создания произвольных типов записей вручную.
Как создать произвольный тип записей
Чтобы создать новый произвольный тип записей, вам нужно будет использовать функцию register_post_type() в WordPress:
<?php register_post_type( $post_type, $args ); ?>
Функция позволяет создавать новый тип записей, указав его название, поддерживаемые возможности, доступность и другие параметры.
Функция register_post_type() принимает два параметра:
- $post_type – название типа записей
- $args – массив аргументов, определяющих тип записей
Давайте рассмотрим теперь пример создания произвольного типа записей. Вы можете зарегистрировать тип записей в любом из двух мест:
- Внутри файла functions.php темы
- Внутри произвольного плагина
Мы рекомендуем регистрировать произвольный тип записей в плагине, поскольку так вы избежите потери произвольного типа записей при переключении между темами.
Код для регистрации произвольного типа products в functions.php темы:
function register_my_post_type() { $args = array( 'public' => true, 'label' => 'Products' ); register_post_type( 'products', $args ); } add_action( 'init', 'register_my_post_type' );
В панели администратора WordPress появится новое меню Products:
WordPress также добавляет администраторский интерфейс для нового произвольного типа записей. Новый пункт меню позволяет добавлять новые продукты или редактировать уже существующие, что выполняется аналогично действиям с записями и страницами в WordPress. Этот пример очень простой. Ваш произвольный контент будет определять сложность типа записей, а следовательно и аргументы, которые вам нужно будет передать в функцию.
Вывод произвольного типа записей с помощью WP_Query()
Если вы хотите вывести на экран данные произвольного типа записей, используйте WP_Query() для получения записей в цикле. Функция WP_Query() принимает параметр post_type, который определяет возвращаемый тип контента. В примере ниже мы выводим все продукты в WordPress:
$args = array ( 'posts_per_page' => '-1', 'post_type' => 'products' ); // Custom query. $query = new WP_Query( $args ); if ( $query->have_posts() ) { // Start looping over the query results. while ( $query->have_posts() ) { $query->the_post(); ?> <h1><?php the_title() ?></h1> <div class='content'> <?php the_content() ?> </div> <?php } } wp_reset_postdata()
Как вывести рубрику для произвольного типа записей в WordPress
Для произвольных типов записей вы можете выводить произвольную рубрику в WordPress.
Для начала вам нужно будет прикрепить таксономию Category к произвольному типу записей. По умолчанию у произвольного типа записей нет прикрепленных таксономий. Вам нужно добавить дополнительный аргумент taxonomy, заданный в category, к функции register_post_type().
'taxonomies’ => array( 'category' ),
Страницы рубрик по умолчанию выводят только тип записей Posts. Чтобы вывести ваши произвольные типы записей на той же самой странице, вам нужно добавить дополнительный код к файлу functions.php темы (или в ваш плагин).
add_filter('pre_get_posts', 'query_custom_post_type'); function query_custom_post_type($query) { if( is_category() ) { $post_type = get_query_var('post_type'); if($post_type) $post_type = $post_type; else $post_type = array('nav_menu_item', 'post', 'Products'); $query->set('post_type',$post_type); return $query; } }
Вы можете выводить рубрики для произвольного типа записей. Чтобы вывести рубрику для произвольного типа записей, вам нужно определить аргумент taxonomy. Затем вам нужно будет передать его в функцию wp_list_categories(), которая используется для вывода рубрик.
$customPostTaxonomies = get_object_taxonomies('Products'); if (count($customPostTaxonomies) > 0){ foreach($customPostTaxonomies as $tax){ $args = array( 'orderby' => 'name', 'taxonomy' => $tax, ); wp_list_categories( $args ); } }
Шаблоны произвольных типов записей в WordPress
Темы WordPress поддерживают различные шаблоны для произвольных типов записей. Шаблоны поддерживаются для вывода отдельного элемента произвольных записей или вывода архивов. По умолчанию WordPress будет использовать файлы текущей темы – archive.php, single.php и index.php. Если вы хотите создать шаблон для вашего произвольного типа записей, скопируйте существующий php файл и отредактируйте его. WordPress следует иерархии шаблонов и использует тот шаблон, который имеет больший приоритет.
Стандартные шаблоны произвольных типов записей в WordPress
single-{post-type}.php
Шаблон для отдельной записи, который используется в том случае, когда пользователь запрашивает отдельный пост из произвольного типа записей. Если single-{post-type}.php отсутствует, то в таком случае будет использоваться стандартный шаблон single.php.
archive-{post-type}.php
Шаблон для вывода архивов по произвольному типу записей. Вместо него будет использоваться archive.php, если archive-{post-type}.php отсутствует.
search.php
Шаблон для вывода результатов поиска. Чтобы включить результаты поиска по произвольному типу записей, вам нужно добавить pre_get_posts.
index.php
Файл index.php используется в том случае, если ни один из специальных шаблонов для произвольного типа записей не был задан.
Источник: templatetoaster.com