Верх страницы
Обложка к записи WPTRT Admin Notices
Время для прочтения: 1 мин. 15 сек.

WPTRT Admin Notices

Ребята из команды, которые делают ревью тем на wp.org, представили своё отличное решение WPTRT Admin Notices для показа уведомлений в админке WordPress.

WPTRT Admin Notices — это класс, который позволяет авторам тем и плагинов добавлять уведомления для пользователей консоли WordPress.

Основной целью данного проекта является предоставление стандартизированного метода создания уведомлений в стилистике WordPress.

Уведомления, созданные с использованием этого класса, автоматически удаляются.

Внешний вид

Внешний вид WPTRT Admin Notices

Как использовать

$my_theme_notices = new \WPTRT\AdminNotices\Notices();

// Добавляем уведомление.
$my_theme_notices->add( (string) $id, (string) $title, (string) $content, (array) $options );

// Загружаем.
$my_theme_notices->boot();

Экземпляр класса Notices создается при помощи $my_theme_notices = new \WPTRT\AdminNotices\Notices(). А для добавления нового уведомления используется метов add().

Аргументы этого метода:

ПараметрТипОбязательныйОписание
$idstringДаУникальный идентификатор для уведомления. Может содержать латинские буквы в нижнем оегистре и символ подчеркивания. На его основе генерится имя ключа для опции или меты у пользователя, которые записываются в базу данных.
$titlestringДаЗаголовок для вашего уведомления. Если вы не хотите использовать заголовок — передайте false.
$messagestringДаСодержимое уведомления. Может содержать только определенные теги: <p>, <a>, <em>, <strong>.
$optionsarrayНетДополнительные аргументы для уведомления, которые используются для изменения поведения по умолчанию.

Аргумент $options — это массив, который может содержать следующие опциональные настройки:

КлючТипЗначениеПо умолчанию
scopestringМожет быть global или user. Указывает, где хранить статус уведомления: в опциях или в метаданных пользователя.global
typestringМожет принимать одно из значений: info, success, warning, error.info
alt_styleboolУстановите true, если хотите использовать альтернативные стили для уведомления.false
capabilitystringКакие права должны быть у пользователя, чтобы он мог видеть уведомление. Подробнее о Ролях и Возможностях смотрите в статье.edit_theme_options
screensarrayМассив идентификаторов экрана, на которых показывать уведомление. Подробнее об экранах читайте в этой статье.[]
option_prefixstringПрефикс для генерации ключа опции или меты, в которых хранится статус уведомления.wptrt_notice_dismissed

Примеры

Вы можете добавить этот сниппет в уже существующий код темы или плагина.

Для начала необходимо инициализировать объект Notices:

use WPTRT\AdminNotices\Notices;
$my_theme_notices = new Notices();

Затем добавить простое уведомление с настройками по умолчанию:

$my_theme_notices->add(
    'my_theme_notice',                           // Уникальный ID.
    esc_html__( 'Notice Title', 'textdomain' ),  // Заголовок.
    esc_html__( 'Notice content', 'textdomain' ) // Содержимое.
);

Код из примера выше создает новое уведомление, которое будет показано на всех страницах консоли WordPress.

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

Для большей кастомизации уведомления добавьте аргумент $options:

$my_theme_notices->add(
    'my_notice',                                  // Уникальный ID.
    esc_html__( 'Notice Title', 'textdomain' ),   // Заголовок.
    esc_html__( 'Notice content', 'textdomain' ), // Содержимое.
    [
        'scope'         => 'user',       // Хранить статус уведомления в метаданных пользователя.
        'screens'       => [ 'themes' ], // Показывать только на экране "Темы" screen.
        'type'          => 'warning',    // Тип уведомления предупреждение (оранжевый цвет).
        'alt_style'     => true,         // Использовать альтернативные цвета.
        'option_prefix' => 'my_theme',   // Изменить префикс меты для хранения статуса уведомления.
    ]
);

Код из примера выше создаст новое уведомление, которое будет показываться только на экране «Темы» консоли WordPress.

Когда уведомление будет закрыто, создастся запись в таблице wp_usermeta с ключём my_theme_my_notice.

Класс Notices может быть использован для добавления множества уведомлений.

После добавления нескольких уведомлений вызовите метод boot, чтобы они вывелись в консоли WordPress:

$my_theme_notices->boot();

Если собрать всё вышесказанное в одну кучу, то полный пример будет выглядеть примерно так:

$my_theme_notices = new \WPTRT\AdminNotices\Notices()
$my_theme_notices->add( 'my_theme_notice', __( 'Title', 'textdomain' ), __( 'Content', 'textdomain' ) );
$my_theme_notices->boot();

Autoloading

Если вам нужен будет автозагрузик классов, то можно использовать либо Composer, либо простой autoloader из самого проекта WPRTR.

Composer

В командной строке пишем:

composer require wptrt/admin-notices

WPTRT Autoloader

Если хотите подключить загрузчик от WPTRT, используйте следующий код:

include get_theme_file_path( 'path/to/autoload/src/Loader.php' );

$loader = new \WPTRT\Autoload\Loader();
$loader->add( 'WPTRT\\AdminNotices\\Notice', get_theme_file_path( 'path/to/admin-notices/src' ) );
$loader->register();

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы