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 – поточний пост у циклі

Приклади

0

#1 Демонстрація роботи

Припустимо нам у циклі потрібно перевірити формат посту та вивести іконку, якщо це, припустимо, відео формат:

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

#2 Приклад вказівки кількох форматів для перевірки

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

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

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

Цей приклад показує як перевірити формат у посту з ID = 23:

if( has_post_format( 'status', 23 ) ){
	// це статус
}

список змін

З версії 3.1.0Введено.

Код has_post_format() WP 6.0.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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *