is_multi_author()WP 3.2.0

Определяет, есть ли на сайте более одного автора, который публиковал записи. Условный тег.

Функция проверяет, сколько уникальных авторов опубликовали хотя бы одну запись, и возвращает true, если таких авторов больше одного.

Это условная функция (conditional tag) — обычно используется в шаблонах тем для вывода дополнительных элементов (например, ссылки на автора), только если это мульти-авторский блог.

Кэширование

Результат кешируется в transient‑кеш is_multi_author и фильтруется через хук is_multi_author перед возвращением.

При добавлении новых записей или авторов transient может устареть — можно очищать кеш вручную с помощью delete_transient( 'is_multi_author' ).

Использует глобальный объект $wpdb и SQL‑запрос к таблице posts, выбирая до двух уникальных авторов, имеющих опубликованные посты.

Можно изменить поведение через фильтр is_multi_author, чтобы переопределить значение по логике разработчика:

add_filter( 'is_multi_author', 'ваша_функция' );
Хуки из функции

Возвращает

true|false.

  • true — на сайте более одного автора опубликовали посты.
  • false — на сайте только один автор публикует посты.

Использование

<?php
if( is_multi_author() ){
	 // более одного автора на сайте
}
?>

Примеры

0

#1 Выведем ссылку на посты автора, только если на блоге несколько авторов:

<?php
if( is_multi_author() ){
	 the_author();
}
?>
0

#2 Добавление CSS‑класса при нескольких авторах

Если нужно добавить в <body> класс group-blog для мультиавторских сайтов:

add_filter( 'body_class', 'wpdocs_body_classes' );

function wpdocs_body_classes( $classes ) {
	if ( is_multi_author() ) {
		$classes[] = 'group-blog';
	}

	return $classes;
}
0

#3 Очистка кеша после публикации новой записи

Чтобы сбросить результат при добавлении записи:

add_action( 'save_post', 'clear_multi_author_cache' );

function clear_multi_author_cache( $post_id ) {
	delete_transient( 'is_multi_author' );
}

Заметки

  • Global. wpdb. $wpdb WordPress database abstraction object.

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

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

Код is_multi_author() WP 6.9

function is_multi_author() {
	global $wpdb;

	$is_multi_author = get_transient( 'is_multi_author' );
	if ( false === $is_multi_author ) {
		$rows            = (array) $wpdb->get_col( "SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 2" );
		$is_multi_author = 1 < count( $rows ) ? 1 : 0;
		set_transient( 'is_multi_author', $is_multi_author );
	}

	/**
	 * Filters whether the site has more than one author with published posts.
	 *
	 * @since 3.2.0
	 *
	 * @param bool $is_multi_author Whether $is_multi_author should evaluate as true.
	 */
	return apply_filters( 'is_multi_author', (bool) $is_multi_author );
}