digiom/wotices

Notices for WordPress

1.1.1 2023-06-23 12:23 UTC

This package is auto-updated.

Last update: 2024-05-23 14:20:23 UTC


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

Перед созданием уведомления с помощью метода в менеджере уведомлений происходит применение данного фильтра.