has_post_format()
Проверяет наличие указанного формата у записи (поста). Условный тег.
В функцию передается названия формата или нескольких форматов и она проверят относится ли запись в цикле к указанному формату. Если указать второй параметр - ID записи, то функцию можно использовать за пределами цикла - проверка наличия формата будет для указанной записи.
Форматы записей - это дополнительная опция WordPress. Она включается отдельно и в некоторых темах её может не быть.
Хуков нет.
Возвращает
true|false
. Логические:
true - если запись относится к указанному формату;
false - если запись не относится ни к одному формату.
Использование
has_post_format( $format, $post_id );
- $format(строка/массив) (обязательный)
- Название формата поста, который нужно проверить. Можно указать несколько названий форматов в массиве. Базовые форматы WordPress: aside, chat, gallery, link
image, quote, status, video, audio. - $post_id(число/объект)
- ID поста (записи), наличие указанного формата у которого нужно проверить.
По умолчанию: null - текущий пост в цикле
Примеры
#1 Демонстрация работы
Предположим нам в цикле нужно проверить формат поста и вывести иконку, если это, предположим, video формат:
// В цикле if( has_post_format( 'video' ) ){ echo "<img src="ссылка на иконку" alt="" />"; }
#2 Пример указания нескольких форматов для проверки
Предположим наши записи условно делятся на новости (обычные посты) и медиа (посты с галереями и видео). При выводе в цикле нам нужно пометить посты "медиа". Для этого укажем форматы в виде массива:
if( has_post_format( array('video', 'gallery') ) ){ // это медиа пост }
#3 Проверка формата у конкретного поста
Этот пример показывает как проверить формат у поста с ID = 23:
if( has_post_format( 'status', 23 ) ){ // это статус }
Список изменений
С версии 3.1.0 | Введена. |
Код has_post_format() has post format WP 6.1.1
function has_post_format( $format = array(), $post = null ) { $prefixed = array(); if ( $format ) { foreach ( (array) $format as $single ) { $prefixed[] = 'post-format-' . sanitize_key( $single ); } } return has_term( $prefixed, 'post_format', $post ); }