С выпуском WordPress 3.0 были представлены два отличных способа лучшей организации и отображения контента: типы записей и таксономии . Эти два усовершенствования улучшают роль WordPress как универсальной системы управления контентом, и они продолжают доказывать, что WP — это не просто платформа для блогов. Когда выпуски 3.1 будут иметь форматы постов, вам необходимо понять, как использовать и реализовывать типы постов и таксономии.
Что мы собираемся осветить
В этом уроке я расскажу вам следующее:
- Обзор типов записей и таксономий в WordPress 3.0
- Как интегрировать типы постов и таксономии в ваши темы
- Реальные примеры того, как использовать типы постов и таксономии инновационными способами в ваших проектах
К тому времени, как вы завершите эти шаги, я надеюсь наполнить ваши проекты, исследуя другие замечательные способы интеграции этих организационных элементов в WordPress.
Краткий обзор типов постов WordPress
Когда вы думаете о типах постов, важно помнить об организации . Тип публикации сам по себе не добавляет никакой функциональности, но он позволяет нам лучше организовывать контент WordPress и создавать панели администратора, которые более специфичны для типа сайта, с которым мы работаем.
Вот некоторые важные вещи, которые следует помнить при работе с типами записей:
- Когда вы создаете новый тип поста, в левом верхнем меню администратора появится новый элемент навигации верхнего уровня. Оттуда доступны все стандартные редакторы постов и страниц.
- Строка URL-адреса для нового типа записи будет выглядеть следующим образом: http://yoursite.com/ enjpost-type ultimate/ndomtitle automotive/.
- Вы можете создавать архивные страницы пост-типа точно так же, как вы делаете это с категориями, и вы даже можете создавать специальные файлы шаблонов, создав файл archive- {post-type} .php.
«Так же, как сообщения отображаются в их собственном архиве с archive.php, пользовательские типы сообщений будут использовать archive- {posttype} .php.»
Для получения дополнительной информации об интеграции типов сообщений, запросов типов сообщений и общих функций посетите кодекс здесь .
Интеграция типов постов через Functions.php
Интеграция типов записей — это просто вопрос включения функции register_post_type
. Как только вы включите это в свой файл functions.php, ваше навигационное меню должно выглядеть примерно так:
к этому:
Чтобы создать пользовательские типы записей, откройте файл functions.php
вашего шаблона в редакторе и поместите в него следующую функцию:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
function create_post_type() {
register_post_type( ‘mysite_reviews’,
array(
‘labels’ => array(
‘name’ => __( ‘Reviews’ ),
‘singular_name’ => __( ‘Review’ )
),
‘public’ => true,
‘menu_position’ => 5,
‘rewrite’ => array(‘slug’ => ‘reviews’)
)
);
}
add_action( ‘init’, ‘create_post_type’ );
|
Сломанный, это добавляет функцию create_post_type
и регистрирует тип записи mysite_reviews ,
1
2
3
|
add_action( ‘init’, ‘create_post_type’ );
function create_post_type() {
register_post_type( ‘mysite_reviews’,
|
Вы можете удивиться, почему я назвал post_type mysite_reviews , а не просто отзывы . Я сделал имя более заметным, чтобы мой тип поста не мешал другим именам постов из других плагинов или тем.
Еще одно приятное напоминание: ваши пользовательские типы сообщений не должны превышать 20 символов, так как это ограничение столбца базы данных.
Вот сводка важных параметров типа записей, которые я установил выше:
- метки — WordPress позволяет нам маркировать все от имени типа поста до метки для добавления новых постов. Полный список можно найти здесь . В приведенной выше функции я пометил название типа сообщения и его единственное имя.
- public — если установлено в true
- menu_position — я установил это на 5, что поместит тип поста прямо в «Посты». Остальные места размещения: ноль (ниже комментариев), 0 (ниже медиа), 20 (ниже страниц), 60 (ниже первого разделителя) и 100 (ниже второго разделителя)
- rewrite — чтобы наш фактический термин «mysite_reviews» не помещался в URL, мы установили для параметра slug значение «reviews», которое в конечном итоге будет намного лучше для наших посетителей, ссылок и SEO.
Чтобы получить больше информации
Полный список аргументов параметров для типов записей можно найти здесь .
Отображение типов записей в темах WordPress
Поскольку типы записей WordPress являются просто расширением существующей системы классификации, их отображение в теме очень похоже на то, что уже есть. В настоящее время существует три основных способа отображения пользовательских типов записей в ваших темах:
- Post Query
- Шаблон одного сообщения
- Архивный шаблон
Отображение через почтовый запрос
Чтобы отобразить новый тип записи mysite_reviews
, вам нужно открыть файл шаблона, на котором вы хотите его отобразить (в моем случае я обычно создаю собственный home.php
для шаблонов), и введите следующий код:
1
2
3
4
5
6
7
8
|
$args = array( ‘post_type’ => ‘mysite_reviews’, ‘posts_per_page’ => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
the_title();
echo ‘<div class=»entry-content»>’;
the_excerpt();
echo ‘</div>’;
endwhile;
|
Это просто создает новый цикл WordPress, который будет отображать заголовок и выдержку из 10 самых последних записей в mysite_reviews
записи mysite_reviews
.
Отображение с помощью шаблона одного сообщения
Точно так же, как вы можете настроить способ отображения отдельных сообщений с помощью файла single.php темы, вы также можете настроить способ отображения записей отдельных типов сообщений. Самый простой способ сделать это — создать дубликат файла single.php вашей темы и переименовать его в single-{posttypename}.php
. Оттуда вы можете настроить этот файл в соответствии со своими спецификациями. Используя приведенный выше пример, нам понадобится один шаблон поста с именем single-mysite_reviews.php
.
Отображение по шаблону архива
Хотя эта функция будет недоступна до выпуска WP 3.1, типы сообщений также можно отображать в архивном стиле, создав файл в вашей теме с именем archive- {posttypename} .php. Итак, если бы мы создавали архив для типа записи, мы бы создали шаблон archive-mysite_reviews.php
именем archive-mysite_reviews.php
и archive-mysite_reviews.php
его в нашу папку шаблонов.
С помощью шаблонов настраиваемых типов сообщений создателям настраиваемых тем легче создавать сайты подписки и членства, ограничивая содержимое этих конкретных публикаций и страниц указанными группами пользователей.
Краткий обзор таксономий WP
Я не буду вдаваться в подробности, поскольку Пол Кайзер уже написал большой обзор таксономий и кода, который используется для реализации этой функции (см. Руководство здесь ). Ключевое слово, которое нужно помнить, думая о таксономиях, — это классификация . Они похожи на теги, но допускают более глубокую, более специфичную для контента классификацию.
По правде говоря, они являются чрезвычайно мощным способом группировать различные предметы самыми разными способами.
Например, скажем, что я использовал тип сообщения Обзоры сверху. Поскольку я определенно хочу классифицировать этот широкий тип поста, я могу создавать таксономии, такие как:
- Обзоры фильмов
- Отзывы о книге
- Отзывы о товаре
С пользовательскими таксономиями я мог бы даже глубже классифицировать вышеупомянутые таксономии. Я мог бы пойти в жанрах кино, авторов книг и продуктовых рынков. Опять же, вместе с типами записей, они значительно расширяют возможности управления контентом WordPress.
Интеграция таксономий через Functions.php
В целом, таксономии довольно легко реализовать в вашем файле functions.php
. Помните, что вы можете использовать иерархию с ними или обращаться с ними как с тегами, поэтому чем сложнее вы хотите, тем больше сложность. В любом случае, вот краткое изложение того, как включить их в вашу тему.
Снова откройте файл functions.php и вставьте следующий код:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
function movie_taxonomy() {
register_taxonomy(
‘movie_review’,
‘mysite_reviews’,
array(
‘hierarchical’ => true,
‘label’ => ‘Movie Review’,
‘query_var’ => true,
‘rewrite’ => array(‘slug’ => ‘movie-reviews’)
)
);
}
add_action( ‘init’, ‘movie_taxonomy’ );
|
Чтобы разобраться в этом, сначала мы даем таксономии формальное имя («movie_review») и помещаем его в пост типа «mysite_reviews», который мы создали ранее.
1
2
3
4
|
function movie_taxonomy() {
register_taxonomy(
‘movie_review’,
‘mysite_reviews’,
|
Затем мы передаем эти значения:
1
2
3
4
5
6
|
array(
‘hierarchical’ => true,
‘label’ => ‘Movie Review’,
‘query_var’ => true,
‘rewrite’ => array(‘slug’ => ‘movie-reviews’)
)
|
Это предоставляет следующие аргументы:
- иерархический — при значении «true» таксономия будет действовать больше как категория. Могут быть родительские таксономии и вложенные таксономии, обеспечивающие большую глубину классификации. При значении false они действуют как теги.
- label — Как и в случае с типами записей выше, эта метка будет публично получена таксономией.
- query_var — Когда установлено «true», эта таксономия становится запрашиваемым элементом.
- переписать — это устанавливает перезапись URL. Теперь сообщения в этой таксономии будут отображаться как http://mysite.com/movie-reviews/ndompost title} /.
Конечный результат в нашей админ-навигации должен выглядеть следующим образом:
Кроме того, мы можем погрузиться в этот интерфейс и добавить больше категорий и структур классификации. Этот интерфейс похож на интерфейс категории, с которым вы, возможно, уже знакомы.
С помощью этого интерфейса вы можете редактировать слагов различных категорий в вашей таксономии, создавать новые категории и определять родительские и дочерние категории.
Чтобы получить больше информации
Полный список аргументов параметров для таксономий можно найти здесь .
Отображение таксономий в темах WordPress
В настоящее время существует три основных способа отображения пользовательских типов записей в ваших темах:
- Облако таксономии
- Пользовательский запрос таксономии
- Пользовательский список таксономии
Облако таксономии
Так же, как есть облака тегов, есть облака таксономии. Чтобы упростить это, теги и облака используют функцию wp_tag_cloud
. Чтобы отобразить массив категорий таксономии в облаке, мы использовали бы следующий код:
1
2
3
|
<?php
wp_tag_cloud( array( ‘taxonomy’ => ‘taxonomy_name_1′,’taxonomy_name_2’ ) );
?>
|
Для получения дополнительной информации о функции и аргументах ее параметров посетите кодекс .
Пользовательский запрос таксономии
Таксономии также могут быть включены в пользовательские запросы так же, как мы делали с типами записей выше. Например, чтобы отобразить контент из таксономии movie_genre
, нам нужно вставить следующий код в наш файл шаблона:
1
2
3
4
5
6
7
8
|
$args = array(
‘tax_query’ => array(
‘taxonomy’ => ‘movie_genre’,
‘field’ => ‘slug’,
‘terms’ => ‘comedy’
)
);
query_posts( $args );
|
Во-первых, мы используем аргумент tax_query
чтобы мы могли передавать параметры, которые позволят нам выполнять запросы по слагам или терминам и возвращать более точные результаты запроса. В этом примере мы отображали сообщения, помеченные как «комедия» в пользовательской таксономии «movie_genre». Еще раз, как мы сделали с типами записей, мы можем ограничить количество сообщений, возвращаемых этим запросом.
Пользовательские таксономические списки
Чтобы отобразить список записей по таксономии с разделением запятыми, нам просто нужно поместить где-то в цикле следующее:
1
|
<?php the_terms( $post->ID, ‘{taxonomy name}’, ‘{Displayed Title}: ‘, ‘, ‘, ‘ ‘ );
|
Для этого списка есть другие параметры отображения, параметры можно найти здесь .
Использование типов записей и таксономий в вашем следующем проекте
Теперь, когда у нас есть гайки и болты, я думаю: «Почему я забочусь об этих вещах?» это действительно честный вопрос. Возможности с типами записей и таксономиями, особенно при работе с клиентами, которые часто слишком заняты, чтобы управлять сложностями сайта, безграничны. Это, на мой взгляд, экономит время по сравнению с созданием новых функций администратора и обновлением плагинов, и открывает двери для новых возможностей с гораздо меньшими затратами труда (и кода).
Ниже приведены некоторые идеи о том, как интегрировать их в реальную работу:
1. Обзор сайтов
Во-первых, сайт обзора мог бы воспользоваться преимуществами пользовательских шаблонов, перечисленных выше (одиночные и архивные)
Вот еще несколько типов постов и таксономий, которые вы можете внедрить на обзорном сайте:
- Тип сообщения — Обзоры фильмов
- Таксономии — Жанр, Актер, Режиссер
- Тип сообщения — Обзоры книг
- Таксономии — Жанр, Автор, Издатель
- Тип сообщения — Отзывы о товаре
- Таксономии — категория товара, цена
2. Объекты недвижимости
В то время как есть несколько хороших шаблонов для сайтов объявлений о недвижимости, типы публикаций и таксономии позволяют творческим людям создавать собственные шаблоны, которые могут легко поддерживаться как клиентами, так и веб-мастерами. Вот лишь несколько идей для использования в вашем следующем проекте:
- Тип сообщения — списки
- Таксономии — Площадь, Агент, Цена, Номера
- Тип сообщения — Агенты
3. Списки событий
Одна вещь, которой WordPress действительно не хватает (на мой взгляд), это хорошая система управления событиями. Типы записей и таксономии могут легко позаботиться об этом, предлагая систему для классификации ежемесячных событий по местоположению, дню или любой другой системе, о которой вы только можете подумать.
4. Подписка на сайты
С созданием нового типа сообщения и шаблона вы можете создать собственную премиум-категорию для своего блога или веб-сайта и интегрировать платежный шлюз для создания своего собственного сайта.
5. Электронная коммерция
Создав тип продукта и шаблон, вы можете легко добавлять и отображать продукты для продажи на своем сайте. Кроме того, таксономии позволят упростить организацию продукта.
Куда мы идем отсюда?
Я надеюсь, что этот учебник объяснил типы постов и таксономии в WordPress 3.0, и почему они являются чрезвычайно ценным ресурсом для реализации в ваших проектах. Я знаю, что есть много сторонников плагинов (и я сам являюсь их автором), но я надеюсь, что убедился, что реализация этих вещей — очень простая задача, которая сэкономит время как для вас, так и для вашего клиента в долгое время.
Приведенный выше список идей в лучшем случае невелик, поэтому я хотел бы услышать, как вы внедрили их в свои проекты или, может быть, какие-то другие применения, которые я не перечислил.
Большое спасибо за чтение!