WordPress. Форматы записей
27.04.2019
Теги: CMS • Web-разработка • WordPress
При создании новой записи, есть возможность указать формат записи — обычный, цитата, ссылка, изображение, галерея, видео, чат и так далее. Можно сказать, что это такая таксономия, элементы которой стандартны для любых тем WordPress. Однако создавать свой собственный формат нельзя.
Форматы записей — это возможность стилизовать записи сайта в зависимости от их формата. WordPress поддерживает 10 форматов (включая стандартный) — значит, можно оформить запись десятью способами. Предположим, на сайте есть обычные статьи (текст + картинки + комментарии), а есть видеозаписи (видео + описание + комментарии). Для страниц со статьями лучше белый фон, а для страниц с видео — наоборот, темный.
aside
(заметка)gallery
(галерея)link
(ссылка)image
(изображение)quote
(цитата)status
(статус)video
(видео)audio
(аудио)chat
(чат)
Включение поддержки форматов постов
Для этого следует добавить вызов функции add_theme_support()
в файл functions.php
. В коде плагина вызов этой функции можно повесить на событие after_setup_theme
.
add_theme_support( 'post-formats', [ 'aside', 'gallery', 'link', 'image', 'quote', 'status', 'video', 'chat', 'audio' ] );
По умолчанию форматы поддерживаются только записями типа post
, но можно добавить поддержку и для страниц (тип записи page
) и других произвольных типов постов. Для этого добавляем в файл functions.php
// включаем поддержку форматов постов для страниц add_post_type_support('page', 'post-formats');
При регистрации собственного типа поста, можно сразу указать, что он будет поддерживать форматы записей:
register_post_type( 'sometype', [ /*...*/ 'supports' => ['title', 'editor', 'post-formats'] ] );
Использование форматов постов
При использовании функций body_class()
и/или post_class()
, WordPress, в зависимости от формата поста, будет добавлять соответствующий CSS-класс:
body_class() |
post_class() |
---|---|
.single-format-standard , .single-format-aside , .single-format-gallery , .single-format-link , .single-format-image , .single-format-quote , .single-format-status , .single-format-video , .single-format-audio , .single-format-chat |
.format-standard , .format-aside , .format-gallery , .format-link , .format-image , .format-quote , .format-status , .format-video , .format-audio , .format-chat |
page
, даже если для них включена поддержка форматов.
Функции get_post_format()
и has_post_format()
позволяются узнать формат той или иной записи. И, в зависимости от этого, выполнить то или иное действие:
if (get_post_format() == 'video') { /*.....*/ }
if (has_post_format('video')) { /*.....*/ }
get_post_format()
верзвращает false
, если у поста не указан никакой формат, т.е. если это обычный пост.
Для вывода записей определенного формата можно использовать класс WP_Query
:
// получаем записи с форматом video $query = new WP_Query([ /*.....*/ 'tax_query' => [ [ 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => ['post-format-video'], ] ] ]);
// получаем записи с форматом aside или audio $query = new WP_Query([ /*.....*/ 'tax_query' => [ 'relation' => 'OR', [ 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => ['post-format-aside'], ], [ 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => ['post-format-audio'], ] ] ]);
Для вывода постов разных форматов удобно использовать функцию get_template_part()
:
get_template_part('template-parts/content', get_post_format());
Функция подключит шаблон content-aside.php
, content-gallery.php
, content-video.php
— если это пост формата aside
, gallery
, video
или content.php
— если это обычный пост, без формата.
- WordPress. Установка и использование WP-CLI
- WordPress. Загрузка svg-файлов
- WordPress. Кеширование
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
- WordPress. Добавляем мета-теги. Часть 3 из 3
Поиск: CMS • Web-разработка • WordPress • Формат записи • Post formats