display_post_states
Позволяет добавить маркер (состояние, метку) к посту в таблице записей в админке.
Такую метку состояния, можно видеть, например, когда запись в черновике, на утверждении и т.д.
Благодаря этому хуку, можно добавить свои маркеры в таблице постов в админ-панели к любому типу записей: постам, страницам, и произвольным типам записей.
Использование
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)
- Объект текущей записи, для которой фильтруются состояния.
Примеры
#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;
}
Получим
#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. |
Где вызывается хук
display_post_states
wp-admin/includes/template.php 2350
return apply_filters( 'display_post_states', $post_states, $post );
