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 2351
return apply_filters( 'display_post_states', $post_states, $post );