has_post_format()WP 3.1.0

Проверяет наличие указанного формата у записи (поста). Условный тег.

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

Форматы записей - это дополнительная опция WordPress. Она включается отдельно и в некоторых темах её может не быть.

Работает на основе: has_term()
1 раз — 0.001473 сек (очень медленно) | 50000 раз — 63.94 сек (очень медленно)

Хуков нет.

Возвращает

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

#1 Пример указания нескольких форматов для проверки

Предположим наши записи условно делятся на новости (обычные посты) и медиа (посты с галереями и видео). При выводе в цикле нам нужно пометить посты "медиа". Для этого укажем форматы в виде массива:

if( has_post_format( array('video', 'gallery') ) ){
	// это медиа пост
}
0

#2 Демонстрация работы

Предположим нам в цикле нужно проверить формат поста и вывести иконку, если это, предположим, video формат:

// В цикле
if( has_post_format( 'video' ) ){ 
	echo "<img src="ссылка на иконку" alt="" />";
 }
0

#3 Проверка формата у конкретного поста

Этот пример показывает как проверить формат у поста с ID = 23:

if( has_post_format( 'status', 23 ) ){
	// это статус
}

Список изменений

С версии 3.1.0 Введена.

Код has_post_format() WP 6.5.2

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 );
}