digiom / wotices
Notices for WordPress
Requires
- php: >=7.0
README
Библиотека для работы с уведомлениями в WordPress.
Использование
Для использования нужно инициализировать объект класса Manager с параметрами. Данный менеджер управляет всеми уведомлениями и его можно наследовать.
Инициализация
// уникальное имя, используется для уникальности данных $name = 'my_plugin_name_notices'; // аргументы менеджера $args = [ 'auto_save' => true, // автоматическое сохранение уведомлений, которые должны быть сохранены в деструкторе 'all_admin_notices' => false, // работает точно так же, как admin_notices, но имеет другое название. Наверное, для наглядности цели использования в коде плагина, также возможно в будущем будут работать в разных условиях. 'network_admin_notices' => false, //используется для работы с мультисайтовой сборкой, сообщение будет выводиться для администратора сети. 'user_admin_notices' => false, //используется для работы с мультисайтовой сборкой, сообщение будет выводиться для администратора сайта сети. ]; // инициализируем $wotices = new Manager($name, $args);
Добавление уведомлений
Два способа добавления:
- Через создание отдельного объекта уведомления с дальнейшим добавлением в менеджер.
- Через менеджер с помощью метода create().
Необходимо использовать тот способ, который удобнее.
Через создание объекта уведомления
// уникальный идентификатор уведомления $notice_id = 'test-info'; // создаем уведомление $notice = new InfoNotice($notice_id); // Требуемые параметры $notice->setId('идентификатор уведомления, строка или число'); $notice->setData('Наименование уведомления, строка до 255 символов'); // добавляем уведомление $wotices->add($notice, $args);
Через менеджер
$args = [ 'id' => 'unique_id' // Уникальный идентификатор уведомления. 'type' => 'info' // Тип уведомления. 'data' => 'Наименование уведомления, можно с html тегами' // Наименование уведомления. 'extra_data' => 'расширенный контент, можно с html тегами' // Расширенный контент, выводимый после наименования. 'prefix' => '' // Набор символов, добавляемых перед идентификатором уведомления. 'dismissible' => false // Разрешить ли пользователю удалять уведомление. ]; $wotices->create($args);
Сохранение уведомлений
По умолчанию все добавляемые уведомления размещаются во временной памяти. Но показ некоторых уведомлений требует сохранения.
Например, может потребоваться сохранить уведомление для пользователя совершившего действие которое привело к его переносу на другую страницу с показом уведомления именно там. Или же нам нужно создать уведомление для всех пользователей, которые должны отклонить уведомление.
Удаление уведомлений
Некоторые уведомления имеют свойство хранения. Такие уведомления, в зависимости от контекста можно удалять.
Регистрация своего типа для уведомлений
Когда не хватает стандартных возможностей для вывода уведомлений, можно зарегистрировать свой уникальный тип и использовать его.
Сделать это возможно с помощью метода registerType():
$wotices->registerType('unique_name', 'Namespace\ClassName');
Все, теперь уведомления типа unique_name можно использовать в коде.
Хуки (фильтры и действия)
Для еще большей гибкости библиотеки, были добавлены хуки и действия. Префикс у каждого хука назначается на основании уникального значения при создании экземпляра менеджера.
Фильтр: (prefix)_manager_args
Предназначен для фильтрации аргументов при создании экземпляра менеджера уведомлений.
Фильтр: (prefix)_manager_create_notices_args
Перед созданием уведомления с помощью метода в менеджере уведомлений происходит применение данного фильтра.