Как добавить поддержку форматов записей в вашу тему


Описание

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

Необходимые навыки

  • Базовые знания HTML/CSS/PHP
  • Базовые знания об установке и активации тем WordPress
  • Понимание структуры папок и файлов
  • Умение редактировать файлы в текстовом редакторе

Цели

  • Учащиеся создадут каждый формат записи, используя стандартную тему WordPress
  • Учащиеся включат поддержку форматов записей в теме, в которой эта функция ещё не включена
  • Учащиеся стилизуют каждый тип формата записи

Ресурсы

  • WordPress, установленный локально
  • Установленная тема Twenty Thirteen (все форматы записей созданы и стилизованы)
  • Установленная тема Twenty Twelve (для демонстрации включения и стилизации форматов записей, если выбранная тема ещё их не поддерживает)
  • Дочерняя тема для включения форматов записей
  • Заполняющий контент из Theme Unit Test Data

Важно, чтобы тема Underscores была настроена как полностью функциональная тема, за исключением форматов записей, чтобы продемонстрировать их настройку и стилизацию.

Отборочные вопросы

  • Знакомы ли вы с установкой и активацией тем через консоль WordPress?
  • Есть ли у вас хотя бы базовые знания HTML/CSS/PHP?
  • Уверенно ли вы используете текстовый редактор для редактирования кода?
  • Будет ли у вас локальный или размещённый на удалённом сервере тестовый сайт WordPress для использования во время занятия?

Примечания для преподавателя

  • Проведение живой демонстрации при объяснении шагов создания дочерней темы крайне важно, чтобы материал стал понятен учащимся.
  • Учащимся проще всего работать с локально установленной копией WordPress. Выделите время до начала занятия, чтобы помочь учащимся установить WordPress локально, если это необходимо. Дополнительную информацию об установке WordPress локально см. в разделе Установка на локальный сервер.
  • Предпочтительные ответы на отборочные вопросы — «да». Участники, ответившие «нет» на все 4 вопроса, могут быть ещё не готовы к этому занятию.

Практическое руководство

Введение: что такое форматы записей?

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

Заметка – Обычно отображается без заголовка. Аналогично обновлению заметки в Facebook.

Aside post screenshot

Галерея – Галерея изображений. Запись, скорее всего, будет содержать шорткод галереи и вложения изображений.

Gallery post screenshot

Ссылка – Ссылка на другой сайт. Темы могут использовать первый тег в содержимом записи в качестве внешней ссылки этой записи. Другой вариант: если запись состоит только из URL, он будет использоваться как URL, а заголовок (post_title) станет именем, связанным с якорем этой ссылки.

Link post type screenshot

Изображение – Одно изображение с подписью или без неё. Первым тегом в записи может считаться изображение. В качестве альтернативы, если запись состоит только из URL, он будет URL изображения, а заголовок записи (post_title) станет атрибутом title изображения.

Image post type screenshot

Цитата – Цитата. Вероятно, будет содержать blockquote с текстом цитаты. В качестве альтернативы цитата может быть самим содержимым, а источник/автор — заголовком.

Quote. post type scree
Тип записи «Цитата»
Status post type.

Видео – Одно видео или плейлист видео.

Зачем использовать форматы записей?

Используя форматы записей, вы поможете посетителям блога сразу понять, какой тип содержимого они просматривают.  Разные стили для каждого формата сделают ваш блог визуально интереснее. Ранее разработчики пытались добиться уникального отображения содержимого, изменяя категории или используя пользовательские типы записей.  Эти пользовательские типы предназначались для чего-то отличного от содержимого блога. Использование форматов записей позволит хранить всё содержимое в разделе блога вашего сайта и после настройки потребует лишь выбора используемого формата. Форматы записей отображаются в RSS-ленте и доступны для редактирования в разделе «Записи» вашего сайта.

Как работают форматы записей

При редактировании отдельной записи вы увидите модуль Формат:

Post formats in the editor.

Если вы не видите модуль Формат, проверьте, включён ли он в разделе Настройки экрана. Если вы не видите параметр Формат и там, вероятно, вы используете тему, которая не поддерживает форматы записей

После назначения записей определённому формату на панели управления появятся значки, указывающие формат каждой записи.  Перейдите в раздел «Записи» > «Все записи»:

Post formats in dashboard
Форматы записей на панели управления

При просмотре блога содержимое будет иметь уникальный вид для каждого формата.

Post formats in site front-end.

Добавление поддержки в тему

Темы должны использовать add_theme_support() в файле functions.php, чтобы сообщить WordPress, какие форматы записей поддерживать, передав массив форматов, например:

add_theme_support( 'post-formats', array( 'aside', 'quote', 'status', 'image', 'gallery', 'chat', 'link', 'audio', 'video' ) );

Обратите внимание: эту функцию необходимо вызвать до срабатывания хука init! Подходящим хуком является after_setup_theme.

Добавление поддержки типов записей

Если вы хотите использовать стилизацию форматов записей для страниц или пользовательских типов записей, это возможно. Типы записей должны использовать add_post_type_support() в файле functions.php, чтобы сообщить WordPress, какие форматы записей поддерживать:

// add post-formats to post_type 'page'
add_post_type_support( 'page', 'post-formats' );

// add post-formats to post_type 'my_custom_post_type'
add_post_type_support( 'my_custom_post_type', 'post-formats' );

Использование форматов записей

В теме используйте get_post_format(), чтобы проверить формат записи и соответствующим образом изменить её отображение. Обратите внимание, что для записей со стандартным форматом будет возвращено значение FALSE. Также можно использовать условный тег has_post_format() :

if ( has_post_format( 'video' )) {
  echo 'this is the video format';
}

Другой способ использования форматов — правила стилизации. Темы должны использовать функцию post_class() в коде оболочки, окружающей запись, чтобы добавлять динамические классы стилей. Форматы записей приводят к добавлению дополнительных классов таким способом, используя имя «format-foo». Например, можно скрыть заголовки записей формата «Статус», добавив это в таблицу стилей темы:

.format-status .post-title {
display:none;
}

Стилизация форматов записей

Хотя вы можете стилизовать и оформлять форматы любым удобным способом, каждый формат соответствует определённому типу «стиля», обусловленному современным использованием. Стоит помнить о предполагаемом назначении каждого формата: это поможет читателям визуально легко распознавать конкретный тип содержимого. Например, форматы заметки, ссылки и статуса обычно отображаются без заголовка или сведений об авторе. Они простые, короткие и второстепенные. Заметка может состоять из одного-двух абзацев, а ссылка, вероятно, будет содержать лишь предложение со ссылкой на URL. И ссылка, и заметка могут содержать ссылку на страницу отдельной записи (с использованием the_permalink()), что позволит оставлять комментарии, однако формат статуса, скорее всего, такой ссылки не содержит. Запись-изображение обычно содержит одно изображение с подписью/текстом или без них. Аудио- или видеозапись будет устроена так же, но дополнительно содержать аудио или видео. Для отображения содержимого любого из этих трёх форматов можно использовать плагины или стандартные встраиваемые элементы. Заголовки и сведения об авторстве для них также могут не отображаться, поскольку содержимое может быть самодостаточным. Формат цитаты особенно хорошо подходит для публикации простой цитаты человека без дополнительной информации. Если поместить цитату только в содержимое записи, а имя цитируемого человека — в заголовок записи, то можно настроить отображение the_content() отдельно, преобразовав его в формат blockquote, и использовать the_title() для отображения имени цитируемого человека в качестве подписи. Чат особенно часто отображается моноширинным шрифтом. С помощью стилизации .format-chat можно отображать содержимое записи моноширинным шрифтом, например внутри блока div с серым фоном, визуально выделяя его как сеанс чата. Дополнительные сведения о стилизации см. в разделе Форматы записей: чат.

Форматы в дочерней теме

Дочерние темы наследуют форматы записей, определённые родительской темой. Вызов add_theme_support() для форматов записей в дочерней теме должен выполняться с более поздним приоритетом, чем в родительской теме, и переопределит существующий список, а не дополнит его.

add_action( 'after_setup_theme', 'childtheme_formats', 11 );
function childtheme_formats(){
     add_theme_support( 'post-formats', array('aside', 'quote', 'status', 'image', 'gallery', 'chat', 'link', 'audio', 'video') ); }

Вызов remove_theme_support('post-formats') полностью удалит эту поддержку.

Групповые упражнения

  1. Используя тему Twenty Thirteen, создайте запись с каждым вариантом формата записи.
  2. Используя Underscores:
    1. Создайте каждый формат записи

Ориентируйтесь на файлы темы Twenty Thirteen , но не забудьте изменить вызовы в соответствии с соглашением об именовании вашей темы

  1. content-aside.php
  2. content-audio.php
  3. content-chat.php
  4. content-gallery.php
  5. content-image.php
  6. content-link.php
  7. content-quote.php
  8. content-status.php
  9. content-video.php
  10. content-none.php

Стилизуйте форматы записей (ориентируйтесь на Twenty Thirteen строка 1380 файла Style.css)

Тест

  1. Что такое форматы записей? Форматы записей используются темой для настройки отображения записи. Функция форматов записей предоставляет стандартизированный список форматов, доступных всем темам, поддерживающим эту функцию.
  2. Какие существуют варианты форматов записей? Заметка, аудио, чат, галерея, изображение, ссылка, цитата, статус, видео
  3. Являются ли форматы записей тем же, что и пользовательские типы записей? Когда следует выбрать пользовательский тип записи вместо формата записи? Нет, пользовательские типы записей отображаются на панели управления в качестве отдельного варианта рядом с записями и страницами.  Пользовательские типы записей полезны, когда вы не хотите, чтобы содержимое отображалось в разделе /blog, например для календаря мероприятий или объявлений о продаже недвижимости.
  4. Где включается поддержка форматов записей для темы? В functions.php, в частности в functions.php дочерней темы
  5. Что необходимо сделать при написании записи, которая должна использовать формат записи? Выбрать используемый формат записи
  6. Где настраивается внешний вид форматов записей? В Style.css, а точнее в Style.css дочерней темы
  7. Поддерживают ли все темы форматы записей? Нет
  8. Какие стандартные темы WordPress поддерживают форматы записей? Twenty Thirteen и Twenty Fifteen
  9. Можно ли добавить поддержку форматов записей в свою тему или дочернюю тему? Да