Добавить пользовательский CSS класс к строке wp-list-table для пользовательского типа записи

Вопрос или проблема

Есть ли способ добавить пользовательский CSS класс на основе данных сообщения в таблице администратора пользовательского типа записи?

wordpress custom class in admin table row

Наконец нашел решение в заметке пользователя в документации 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.

  1. Определение требований: Предположим, у вас имеется пользовательский тип записей my-custom-type, и вы хотите выделять записи, у которых не заполнено определенное метаполе.

  2. Организация кода: Вы можете разместить приведенный код в файле functions.php вашей темы или в подключаемом плагине, который вы используете для управления кастомными функциями WordPress.

  3. Верстка и стили: Добавив уникальные классы, вы сможете применять CSS-стили для кастомизации. Например, в файле стилей админки можете указать:

    .profile_incomplete {
       background-color: #f8d7da;
    }

    Это обеспечит визуальную индикацию пользователю о том, что запись требует внимания.

  4. Тестирование: Проверьте работу кода, добавляя и удаляя метаполя, чтобы убедиться в корректности и надежности решения.

  5. Поддержка и обновления: Поскольку WordPress регулярно обновляется, убедитесь, что данный код поддерживается и адаптирован к будущим изменениям системы, обновляя хуки и фильтры по мере необходимости.

Продуманная кастомизация интерфейса админ-панели не только улучшает пользовательский опыт, но и повышает эффективность управления сайтом. С помощью правильно настроенного кода администраторы или редакторы сайта смогут легче идентифицировать и управлять записями, требующими внимания или дополнительной обработки.

Оцените материал
Добавить комментарий

Капча загружается...