Статьи

Инновационное использование типов постов и таксономий WordPress

С выпуском WordPress 3.0 были представлены два отличных способа лучшей организации и отображения контента: типы записей и таксономии . Эти два усовершенствования улучшают роль WordPress как универсальной системы управления контентом, и они продолжают доказывать, что WP — это не просто платформа для блогов. Когда выпуски 3.1 будут иметь форматы постов, вам необходимо понять, как использовать и реализовывать типы постов и таксономии.

Учебник теперь на Wptuts +

В этом уроке я расскажу вам следующее:

  • Обзор типов записей и таксономий в WordPress 3.0
  • Как интегрировать типы постов и таксономии в ваши темы
  • Реальные примеры того, как использовать типы постов и таксономии инновационными способами в ваших проектах

К тому времени, как вы завершите эти шаги, я надеюсь наполнить ваши проекты, исследуя другие замечательные способы интеграции этих организационных элементов в WordPress.


Когда вы думаете о типах постов, важно помнить об организации . Тип публикации сам по себе не добавляет никакой функциональности, но он позволяет нам лучше организовывать контент WordPress и создавать панели администратора, которые более специфичны для типа сайта, с которым мы работаем.

Вот некоторые важные вещи, которые следует помнить при работе с типами записей:

  • Когда вы создаете новый тип поста, в левом верхнем меню администратора появится новый элемент навигации верхнего уровня. Оттуда доступны все стандартные редакторы постов и страниц.
  • Строка URL-адреса для нового типа записи будет выглядеть следующим образом: http://yoursite.com/ enjpost-type ultimate/ndomtitle automotive/.
  • Вы можете создавать архивные страницы пост-типа точно так же, как вы делаете это с категориями, и вы даже можете создавать специальные файлы шаблонов, создав файл archive- {post-type} .php.

«Так же, как сообщения отображаются в их собственном архиве с archive.php, пользовательские типы сообщений будут использовать archive- {posttype} .php.»

Для получения дополнительной информации об интеграции типов сообщений, запросов типов сообщений и общих функций посетите кодекс здесь .


Интеграция типов записей — это просто вопрос включения функции register_post_type . Как только вы включите это в свой файл functions.php, ваше навигационное меню должно выглядеть примерно так:

наше оригинальное меню WordPress

к этому:

наше новое WordPress меню с нашим типом поста

Чтобы создать пользовательские типы записей, откройте файл 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 являются просто расширением существующей системы классификации, их отображение в теме очень похоже на то, что уже есть. В настоящее время существует три основных способа отображения пользовательских типов записей в ваших темах:

  • 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 его в нашу папку шаблонов.

С помощью шаблонов настраиваемых типов сообщений создателям настраиваемых тем легче создавать сайты подписки и членства, ограничивая содержимое этих конкретных публикаций и страниц указанными группами пользователей.


Я не буду вдаваться в подробности, поскольку Пол Кайзер уже написал большой обзор таксономий и кода, который используется для реализации этой функции (см. Руководство здесь ). Ключевое слово, которое нужно помнить, думая о таксономиях, — это классификация . Они похожи на теги, но допускают более глубокую, более специфичную для контента классификацию.

По правде говоря, они являются чрезвычайно мощным способом группировать различные предметы самыми разными способами.

Например, скажем, что я использовал тип сообщения Обзоры сверху. Поскольку я определенно хочу классифицировать этот широкий тип поста, я могу создавать таксономии, такие как:

  • Обзоры фильмов
  • Отзывы о книге
  • Отзывы о товаре

С пользовательскими таксономиями я мог бы даже глубже классифицировать вышеупомянутые таксономии. Я мог бы пойти в жанрах кино, авторов книг и продуктовых рынков. Опять же, вместе с типами записей, они значительно расширяют возможности управления контентом WordPress.


В целом, таксономии довольно легко реализовать в вашем файле 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}: ‘, ‘, ‘, ‘ ‘ );

Для этого списка есть другие параметры отображения, параметры можно найти здесь .


Теперь, когда у нас есть гайки и болты, я думаю: «Почему я забочусь об этих вещах?» это действительно честный вопрос. Возможности с типами записей и таксономиями, особенно при работе с клиентами, которые часто слишком заняты, чтобы управлять сложностями сайта, безграничны. Это, на мой взгляд, экономит время по сравнению с созданием новых функций администратора и обновлением плагинов, и открывает двери для новых возможностей с гораздо меньшими затратами труда (и кода).

Ниже приведены некоторые идеи о том, как интегрировать их в реальную работу:

Во-первых, сайт обзора мог бы воспользоваться преимуществами пользовательских шаблонов, перечисленных выше (одиночные и архивные)

Вот еще несколько типов постов и таксономий, которые вы можете внедрить на обзорном сайте:

  • Тип сообщения — Обзоры фильмов
  • Таксономии — Жанр, Актер, Режиссер
  • Тип сообщения — Обзоры книг
  • Таксономии — Жанр, Автор, Издатель
  • Тип сообщения — Отзывы о товаре
  • Таксономии — категория товара, цена

В то время как есть несколько хороших шаблонов для сайтов объявлений о недвижимости, типы публикаций и таксономии позволяют творческим людям создавать собственные шаблоны, которые могут легко поддерживаться как клиентами, так и веб-мастерами. Вот лишь несколько идей для использования в вашем следующем проекте:

  • Тип сообщения — списки
  • Таксономии — Площадь, Агент, Цена, Номера
  • Тип сообщения — Агенты

Одна вещь, которой WordPress действительно не хватает (на мой взгляд), это хорошая система управления событиями. Типы записей и таксономии могут легко позаботиться об этом, предлагая систему для классификации ежемесячных событий по местоположению, дню или любой другой системе, о которой вы только можете подумать.

С созданием нового типа сообщения и шаблона вы можете создать собственную премиум-категорию для своего блога или веб-сайта и интегрировать платежный шлюз для создания своего собственного сайта.

Создав тип продукта и шаблон, вы можете легко добавлять и отображать продукты для продажи на своем сайте. Кроме того, таксономии позволят упростить организацию продукта.


Я надеюсь, что этот учебник объяснил типы постов и таксономии в WordPress 3.0, и почему они являются чрезвычайно ценным ресурсом для реализации в ваших проектах. Я знаю, что есть много сторонников плагинов (и я сам являюсь их автором), но я надеюсь, что убедился, что реализация этих вещей — очень простая задача, которая сэкономит время как для вас, так и для вашего клиента в долгое время.

Приведенный выше список идей в лучшем случае невелик, поэтому я хотел бы услышать, как вы внедрили их в свои проекты или, может быть, какие-то другие применения, которые я не перечислил.

Большое спасибо за чтение!