Ребята из команды, которые делают ревью тем на wp.org, представили своё отличное решение WPTRT Admin Notices для показа уведомлений в админке WordPress.
WPTRT Admin Notices — это класс, который позволяет авторам тем и плагинов добавлять уведомления для пользователей консоли WordPress.
Основной целью данного проекта является предоставление стандартизированного метода создания уведомлений в стилистике WordPress.
Уведомления, созданные с использованием этого класса, автоматически удаляются.
Внешний вид
Как использовать
1234567 | $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()
.
Аргументы этого метода:
$id | string | Да | Уникальный идентификатор для уведомления. Может содержать латинские буквы в нижнем оегистре и символ подчеркивания. На его основе генерится имя ключа для опции или меты у пользователя, которые записываются в базу данных. |
$title | string | Да | Заголовок для вашего уведомления. Если вы не хотите использовать заголовок — передайте false . |
$message | string | Да | Содержимое уведомления. Может содержать только определенные теги: <p> , <a> , <em> , <strong> . |
$options | array | Нет | Дополнительные аргументы для уведомления, которые используются для изменения поведения по умолчанию. |
Аргумент $options
— это массив, который может содержать следующие опциональные настройки:
scope | string | Может быть global или user . Указывает, где хранить статус уведомления: в опциях или в метаданных пользователя. | global |
type | string | Может принимать одно из значений: info , success , warning , error . | info |
alt_style | bool | Установите true , если хотите использовать альтернативные стили для уведомления. | false |
capability | string | Какие права должны быть у пользователя, чтобы он мог видеть уведомление. Подробнее о Ролях и Возможностях смотрите в статье. | edit_theme_options |
screens | array | Массив идентификаторов экрана, на которых показывать уведомление. Подробнее об экранах читайте в этой статье. | [] |
option_prefix | string | Префикс для генерации ключа опции или меты, в которых хранится статус уведомления. | wptrt_notice_dismissed |
Примеры
Вы можете добавить этот сниппет в уже существующий код темы или плагина.
Для начала необходимо инициализировать объект Notices
:
12 | use WPTRT\AdminNotices\Notices; $my_theme_notices = new Notices(); |
Затем добавить простое уведомление с настройками по умолчанию:
12345 | $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:
1 | $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
В командной строке пишем:
1 | 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(); |
Ссылки
Если вам нравятся мои статьи, проекты, темы или плагины - вы всегда можете помочь сайту в развитии. Спасибо!
Пошерить1
Твитнуть
Пошерить
Запинить
Отправить
Вотсап