Как реализовать настраиваемые типы записей и настраиваемые поля в WordPress

Опубликовано: 2014-06-10

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

Пользовательские типы сообщений

Похоже, что на нашем тестовом сайте Monday Morning Mug (который мы использовали в нашем блоге по интеграции электронной почты) возникла новая проблема. Наш блог стал настолько большим, что мы наняли штатных сотрудников, занимающихся обзорами кофе. Они были заняты приготовлением кофе и написанием отзывов. Они публиковали эти обзоры в блоге, но наши читатели сказали нам, что все эти обзоры мешают нашему «настоящему» содержанию блога. Нам нужно сделать отдельное место для наших обзоров кофе, но обычные страницы WordPress просто не влезут. Рецензенты также предполагают, что они хотели бы иметь на веб-сайте место для удобного хранения информации, такой как страна, из которой произведен кофе, и заметки о дегустации. Это звучит как идеальное использование для пользовательского типа записи, функции WordPress, которая позволяет нам создавать новые разделы контента на нашем сайте.

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

Мы собираемся добавить новый раздел нашего веб-сайта в подкаталог /coffees/ , полный отзывов о кофе. Это потребует некоторой обработки кода, но это должен быть относительно простой процесс.

Примечание. Для этого вам необходимо иметь возможность редактировать файлы .php в каталоге установки WordPress, для чего обычно требуется доступ по FTP/SFTP/SSH. Убедитесь, что у вас есть это, прежде чем продолжить.

Каждая тема WordPress может использовать файл functions.php, который находится по адресу:
/wp-content/themes/your_current_theme/functions.php
Этот файл обычно используется для тематических изменений сайта, а также для небольших пользовательских модификаций сайта, таких как тот, который мы собираемся сделать.

Примечание. Мы будем добавлять код в файл functions.php , что означает, что он зависит от темы. Если вы добавите это в свой файл functions.php, а затем измените тему в своей установке WordPress, вы удалите настраиваемый тип записи со своего веб-сайта. Вы можете поддерживать пользовательские типы контента, используя плагин, такой как пользовательский интерфейс пользовательского типа публикации.

1. Откройте файл functions.php и добавьте следующий код внизу файла:

function create_new_post_type() {
$labels = array(
'name' 			 => __('Coffee Reviews'),
'singular_name'  => __('Coffee Review'),
);
$args = array(
'labels'      	 => $labels,
'public' 	  	 => true,
'has_archive' 	 => true,
'menu_position'  => 5,
'description'    => 'Reviews And Types of Coffee',
'rewrite'     	 =>
array('slug' => 'reviews'),
'supports'    	 =>
array( 'title',
'comments', 'editor',
'thumbnail', 'custom-fields', 'revisions'),
);

register_post_type('Reviews', $args);
}
add_action('init', 'create_new_post_type');

Поскольку нам не особенно нравится использовать код без представления о том, что он делает, давайте рассмотрим, что делает этот код.

Примечание. Возможно, вы заметили, что $labels и $args определены вне функции register_post_type() , хотя позже они просто передаются в качестве аргументов этой функции. Этот метод способствует организации и удобочитаемости, но вы можете объединить оба массива в один аргумент. Просто было бы сложнее понять.

Массив $args содержит все особенности, необходимые для определения нашего нового типа контента. Вот что они делают:

  • 'labels' — массив, определяющий, что мы будем называть нашим типом контента. Существует множество других меток, которые вы можете использовать, и их полный список доступен в документации здесь.
  • 'public' — логическое значение, определяющее, будет ли сообщение доступно для просмотра вне панели администратора.
  • 'has_archive' — если это значение равно true, это логическое значение создаст архив пользовательских сообщений этого типа, как и стандартные сообщения WordPress.
  • 'menu_position' — это целое число меняет положение вашей пользовательской кнопки навигации по сообщению. Цифра 5 указывает, что он будет идти прямо под вкладкой сообщений. Полный список числовых кодов см. в той же документации.
  • 'description' — описывает тип сообщения.
  • 'rewrite' — это изменяет слаг на «обзоры», что поможет создать полезную структуру постоянных ссылок. (Также может быть логическим; дополнительную информацию см. в документации.)
  • 'supports' — массив, определяющий, какие встроенные функции редактирования/публикации WordPress включены. Этот довольно гибкий, и в нем гораздо больше опций, но для этого поста нам понадобятся как минимум custom-fields и editor .

Затем вызывается функция register_post_type() , которая создает новый тип записи под названием Reviews, используя массив аргументов, который мы только что определили.

Наконец, мы должны вызвать последнюю функцию, чтобы завершить процесс. register_post_type() всегда должен быть инициализирован действием 'init'. Мы можем подключить нашу новую функцию к init, вызвав

add_action(‘init’, ‘create_new_post_type’);

Потрясающий! Теперь, если мы войдем в нашу панель администратора WordPress, мы должны увидеть новую вкладку слева под названием «Отзывы».

coffee_reviews

2. Теперь, когда мы настроили обзоры как настраиваемый тип сообщений, нам нужно обновить структуру постоянных ссылок, чтобы наши читатели могли легко находить наши сообщения. Кроме того, это делает наши URL-адреса более удобными для чтения и оптимизированными для SEO.

3. В строке меню «Настройки» -> «Постоянные ссылки» вы найдете множество общих параметров для структур постоянных ссылок. Мы собираемся изменить пользовательскую настройку, чтобы она соответствовала полю /%category%/%postname%/

Это означает, что WordPress будет генерировать URL-адреса, соответствующие категории и названию наших сообщений.

Примечание. Это изменение касается всего сайта и повлияет на ваши сообщения в других категориях.

custom_permalink

Теперь давайте посмотрим на URL поста, который наши рецензенты написали для кофе Sumatra Ketiara:

суматра_постоянная ссылка

Фантастика! Проверьте этот URL. У нас есть обзоры, разделенные на отдельные каталоги, а URL-адрес написан простым английским языком. Теперь наши читатели точно знают, что они получат, нажав на ссылку.

Настраиваемые поля

Хотя нашим рецензентам нравится новый раздел «Обзор», они попросили нас включить что-то в конце страницы, что позволит им вводить общую информацию, которую они пишут о каждом кофе, такую ​​как страна происхождения и заметки о дегустации. Это звучит как идеальное использование настраиваемых полей, которые, к счастью, очень легко реализовать.

1. В отдельном редакторе обзоров вы увидите кнопку параметров экрана в правом верхнем углу редактора:

screen_options

который расширяется до этого при нажатии:

screen_options_dropdown

2. Установите флажок Дополнительные поля.

Под редактором вы увидите поле «Пользовательские поля», которое мы только что включили.

custom_fields_blank

3. Вы можете ввести что угодно в оба поля; все, что вы вводите и добавляете в поле «Имя», будет сохранено для последующего использования. Здесь мы указываем регион и страну, из которой произведен наш кофе.

custom_fields_region

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

4. Мы собираемся добавить этот тег кода в один из наших документов темы:

<br /><?php the_meta(); ?><br />

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

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

custom_field_example

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