Вопрос или проблема
Есть ли способ добавить пользовательский CSS класс на основе данных сообщения в таблице администратора пользовательского типа записи?
Наконец нашел решение в заметке пользователя в документации WordPress
(Заметка: На той ссылке ошибка в логике булевых операций для проверки экрана, но она исправлена ниже – см. примечание к редактированию для подробностей)
add_filter('post_class', 'set_row_post_class', 10,3);
function set_row_post_class($classes, $class, $post_id){
if (!is_admin()) { // убедитесь, что мы находимся в панели управления
return $classes;
}
$screen = get_current_screen(); // проверьте, на какой странице мы находимся
if ('my-custom-type' != $screen->post_type || 'edit' != $screen->base) {
return $classes;
}
// проверьте, установлено ли какое-либо мета поле
$profile_incomplete = get_post_meta($post_id, 'profile_incomplete', true);
if ('yes' == $profile_incomplete) {
$classes[] = 'profile_incomplete'; // добавьте пользовательский класс, чтобы выделить эту строку в таблице
}
// Вернуть массив
return $classes;
}
Ответ или решение
Добавление индивидуальных CSS-классов к строкам таблицы wp-list-table для пользовательских типов записей в админ-панели WordPress является важной задачей, которая позволяет визуально выделять записи на основе определенных критериев. Внедрение такой функциональности может упростить управление контентом, улучшив ориентацию в административной части сайта. В этом ответе мы рассмотрим, как реализовать данное решение, руководствуясь принципами TEA: теория, пример и применение.
Теория
В WordPress каждый элемент административной области может быть настроен с помощью различных хуков и фильтров, один из которых — post_class
. Этот фильтр позволяет добавлять CSS-классы к записи. Фильтр вызывается при формировании HTML-класса, применяемого к <div>
элементу, оборачивающему каждую запись в админ-таблице. Это дает возможность гибко настраивать внешний вид записей в зависимости от условий, таких как метаполя или другие данные записи.
Использование post_class
возможно как в публичной части сайта, так и в админ-панели. Наша задача — убедиться, что изменения применяются только к админ-панели, и только для конкретного пользовательского типа записи.
Пример
Давайте рассмотрим пример реализации, представленный выше, с дополнительными пояснениями:
add_filter('post_class', 'set_row_post_class', 10, 3);
function set_row_post_class($classes, $class, $post_id){
if (!is_admin()) { // удостоверяемся, что код выполняется только в админ-панели
return $classes;
}
$screen = get_current_screen(); // получаем объект текущего экрана
if ('my-custom-type' != $screen->post_type || 'edit' != $screen->base) {
return $classes;
}
// Проверяем наличие и значение метаполя
$profile_incomplete = get_post_meta($post_id, 'profile_incomplete', true);
if ('yes' == $profile_incomplete) {
$classes[] = 'profile_incomplete'; // добавляем кастомный класс, если условие выполнено
}
return $classes; // возвращаем модифицированный массив классов
}
В этом примере, в зависимости от значения метаполя ‘profile_incomplete’, к строке таблицы записей добавляется класс ‘profile_incomplete’, что позволяет адаптировать стили CSS для отображения таких записей.
Применение
Теперь, когда мы рассмотрели теорию и пример, давайте обсудим, как вы можете применить эти знания в вашем проекте WordPress.
-
Определение требований: Предположим, у вас имеется пользовательский тип записей
my-custom-type
, и вы хотите выделять записи, у которых не заполнено определенное метаполе. -
Организация кода: Вы можете разместить приведенный код в файле
functions.php
вашей темы или в подключаемом плагине, который вы используете для управления кастомными функциями WordPress. -
Верстка и стили: Добавив уникальные классы, вы сможете применять CSS-стили для кастомизации. Например, в файле стилей админки можете указать:
.profile_incomplete { background-color: #f8d7da; }
Это обеспечит визуальную индикацию пользователю о том, что запись требует внимания.
-
Тестирование: Проверьте работу кода, добавляя и удаляя метаполя, чтобы убедиться в корректности и надежности решения.
-
Поддержка и обновления: Поскольку WordPress регулярно обновляется, убедитесь, что данный код поддерживается и адаптирован к будущим изменениям системы, обновляя хуки и фильтры по мере необходимости.
Продуманная кастомизация интерфейса админ-панели не только улучшает пользовательский опыт, но и повышает эффективность управления сайтом. С помощью правильно настроенного кода администраторы или редакторы сайта смогут легче идентифицировать и управлять записями, требующими внимания или дополнительной обработки.