display_post_statesхук-фильтрWP 2.8.0

Позволяет добавить маркер (состояние, метку) к посту в таблице записей в админке.

Такую метку состояния, можно видеть, например, когда запись в черновике, на утверждении и т.д.

Благодаря этому хуку, можно добавить свои маркеры в таблице постов в админ-панели к любому типу записей: постам, страницам, и произвольным типам записей.

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

add_filter( 'display_post_states', 'wp_kama_display_post_states_filter', 10, 2 );

/**
 * Function for `display_post_states` filter-hook.
 * 
 * @param string[] $post_states An array of post display states.
 * @param WP_Post  $post        The current post object.
 *
 * @return string[]
 */
function wp_kama_display_post_states_filter( $post_states, $post ){

	// filter...
	return $post_states;
}
$post_states(Массив)
Массив меток-состояний записи.
$post(WP_Post)
Объект текущей записи, для которой фильтруются состояния.

Примеры

0

#1 Добавим свои метки состояния записи в таблице постоянных страниц

Добавлять метки будет для записей типа page.

## метка для специальных страниц в таблице page записей
add_filter( 'display_post_states', 'special_page_mark', 10, 2 );
function special_page_mark( $post_states, $post ){
	if( $post->post_type === 'page' ){
		if( $post->post_name === 'my-account' ){
			$post_states[] = 'Старница "Мой аккаунт"';
		}

		if( in_array( $post->post_name, ['cart','shop','checkout'] ) ){
			$post_states[] = 'Особая страница';
		}
	}

	return $post_states;
}

Получим

0

#2 Удаляем метку "Классический редактор"

После установки плагина Classic Editor у Записей появится метка, информирующая в каком редакторе она сделана. Это может сделать таблицу менее читаемой:

Удалить такую метку или любую другую просто, зная её ключ:

add_filter( 'display_post_states', 'remove_classic_editor_mark', 10, 2 );

function remove_classic_editor_mark( $post_states, $post ) {
	unset( $post_states['classic-editor-plugin'] ); // "Классический редактор" или "Редактор блоков"

	// Статусы постов
	unset( $post_states['protected'] ); // Защищено паролем
	unset( $post_states['private'] );   // Личное
	unset( $post_states['draft'] );     // Черновик
	unset( $post_states['pending'] );   // На утверждении
	unset( $post_states['sticky'] );    // Прилеплена
	unset( $post_states['scheduled'] ); // Запланировано

	// Особые метки
	unset( $post_states['page_on_front'] );             // Главная страница
	unset( $post_states['page_for_posts'] );            // Страница записей
	unset( $post_states['page_for_privacy_policy'] );   // Страница политики конфиденциальности

	return $post_states;
}

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

С версии 2.8.0 Введена.
С версии 3.6.0 Added the $post parameter.
С версии 5.5.0 Also applied in the Customizer context. If any admin functions are used within the filter, their existence should be checked with function_exists() before being used.

Где вызывается хук

get_post_states()
display_post_states
wp-admin/includes/template.php 2350
return apply_filters( 'display_post_states', $post_states, $post );

Где используется хук в WordPress

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