Хук display_post_states
в WordPress предоставляет возможность добавлять собственные метки (состояния) к записям в таблице записей админ-панели. Это может быть полезно, если вы хотите отметить особые состояния постов, страниц или произвольных типов записей. В данной статье мы рассмотрим, как использовать этот хук, а также предоставим примеры настройки пользовательских меток.
Описание хуку display_post_states
Хук display_post_states
применяется для фильтрации меток, отображаемых в колонке «Состояние» в админ-панели WordPress. Метки состояния позволяют выделить записи, которые, например, находятся на утверждении, в черновике или запланированы. Вы также можете использовать этот хук, чтобы добавить пользовательские состояния к записям, что особенно полезно для идентификации специальных страниц, таких как «Главная» или «Политика конфиденциальности».
apply_filters( 'display_post_states', string[] $post_states, WP_Post $post )
$post_states
: массив строковых значений с метками состояний записей.$post
: объект текущей записи (WP_Post
), к которой применяется фильтр.
Пример использования: добавление метки для специальной страницы
Представьте, что у вас есть сайт, на котором существуют отдельные страницы для магазина и личного кабинета. Вы можете добавить метки, чтобы такие страницы выделялись в таблице записей.
add_filter( 'display_post_states', 'add_custom_page_labels', 10, 2 );
function add_custom_page_labels( $post_states, $post ) {
// Проверяем, что тип записи — это страница
if ( $post->post_type === 'page' ) {
// Добавляем метку для страницы «Личный кабинет»
if ( $post->post_name === 'user-dashboard' ) {
$post_states[] = 'Страница "Личный кабинет"';
}
// Добавляем метку для страниц корзины и оформления заказа
if ( in_array( $post->post_name, ['cart', 'checkout'], true ) ) {
$post_states[] = 'Страница магазина';
}
}
return $post_states;
}
В этом примере функция add_custom_page_labels
добавляет метку для страницы с идентификатором user-dashboard
, а также для страниц корзины и оформления заказа. Это полезно, если вы хотите, чтобы такие страницы были заметны при просмотре списка страниц.
Пример: удаление стандартных меток
После установки некоторых плагинов, например, Classic Editor, в таблице записей могут появляться дополнительные метки, такие как «Классический редактор». Эти метки могут затруднять восприятие таблицы, и их можно удалить через display_post_states
.
add_filter( 'display_post_states', 'remove_unwanted_post_states', 10, 2 );
function remove_unwanted_post_states( $post_states, $post ) {
// Удаляем метку "Классический редактор"
unset( $post_states['classic-editor-plugin'] );
// Удаляем метки для черновиков и защищённых записей
unset( $post_states['protected'] ); // Защищено паролем
unset( $post_states['draft'] ); // Черновик
return $post_states;
}
Этот код удаляет метку «Классический редактор», а также убирает стандартные метки «Черновик» и «Защищено паролем», чтобы сделать таблицу записей более читаемой.
Пример: добавление метки для приватных страниц
Если на сайте используются приватные страницы, можно добавить к ним пользовательскую метку, чтобы такие страницы сразу были видны в списке записей.
add_filter( 'display_post_states', 'add_private_page_label', 10, 2 );
function add_private_page_label( $post_states, $post ) {
// Проверяем, что страница является приватной
if ( 'private' === $post->post_status ) {
$post_states[] = 'Приватная страница';
}
return $post_states;
}
В этом примере мы добавляем метку «Приватная страница» к каждой записи, имеющей статус «приватная». Это позволяет администратору сайта быстро определить, какие страницы доступны только определённой группе пользователей.
Заключение
Хук display_post_states
предоставляет гибкие возможности для управления метками записей в WordPress. Добавляя свои метки, вы можете упростить навигацию по контенту сайта и улучшить организацию записей в админ-панели. Настройка пользовательских меток — это полезный способ сделать интерфейс более информативным и удобным, особенно на сайтах с большим количеством уникальных страниц.