Это апи должно было выйти в 17-й версии WP-Recall, но по просьбам трудящихся его первая часть вышла уже сейчас.
API Notice вышло с релизом WP-Recall 16.18.0 и в версии 16.18.1 туда были добавлены куки (cookie) - т.е. с этой версии стало возможным закрывать сообщение с уведомлением - на определенное время. Время жизни куки разработчик задает самостоятельно. По умолчанию 30 дней.
Так что за единое APi нотисов пришло в плагин и зачем?
Задача, показать пользователю сообщение - тривиальная задача и достаточно часто требуемая.
В своих дополнениях я заметил что повторяюсь выводя эти сообщения и стилизуя их.
Посмотрев поглубже - увидел что в WP-Recall таких окон с десяток и часто они работают на несогласованном механизме. Соответственно выглядят по разному и всё это нарушает единое целое.
Думаю и сторонние разработчики также используют свои механизмы реализации уведомлений и так из раза в раз...
Вот что получилось:
Это первая итерация уведомлений. Данный механизм будет дополнен в 17-й версии и там же будут все существующие уведомления плагина переведены на это апи.
Единство визуальной составляющей - это хорошо. А еще лучше - что теперь не придется писать свои стили, а это значит что и сам плагин и его дополнения будут содержать меньше css стилей.
Как добавить уведомления:
Разрабатывая своё дополнение вы можете использовать функцию rcl_get_notice()
Пример 1 - создадим простое уведомление с типом success:
$args = [ 'type' => 'success', 'text' => 'Всё успешно загружено' ]; return rcl_get_notice( $args );
- иконки для типов уведомлений уже предустановлены.
Пример 2 - создадим предупреждение (warning) с заголовком и своей иконкой:
$args = [ 'type' => 'warning', 'title' => 'Внимание!!!', 'icon' => 'fa-trash', 'text' => 'Вы собираетесь удалить профиль. Это необратимое действие!' ]; return rcl_get_notice( $args );
Результат:
Пример 3 - простой (simple) нотис без иконки:
$args = [ 'type' => 'simple', 'text' => 'Публикаций пока нет' ]; return rcl_get_notice( $args );
Результат:
Пример 4 - блок уведомлений скрываемый на 30 дней щелчком по крестику закрытия.
Часто нотис достаточно показать один раз в несколько дней. Например что не заполнены некоторые поля профиля или есть возможность подписки в группах. И чтобы не быть назойливым - можно их скрывать на нужное количество дней - если пользователь нажал на крестик "закрыть".
$args = [ 'border' => true, // default: true 'class' => 'my_custom_class', 'type' => 'info', // info,success,warning,error,simple 'icon' => 'fa-envelope-o', // https://fontawesome.com/v4.7.0/icons/ 'title' => 'Возможность подписки', 'text' => 'Вступите в группу.<br>Так вы подпишетесь на уведомления группы и будете получать новости из этой группы.', 'cookie' => 'otfm-group-notify', // уникальный cookie id 'cookie_time' => 14, ]; return rcl_get_notice( $args );
- обратите внимание на параметр cookie
. Его вы должны передавать уникальным. Именно так будет называться кука.
cookie_time
- 2 недели будет жить кука. И на это время скроется сообщение если его пользователь закроет. По умолчанию 30 дней.
text
- любой html. я в дополнении друзей уже использую эти уведомления и в одно я сделал полноценной формой: сообщение, две кнопки - удобно.
Результат:
Какие планы на развитие api уведомлений?
Из него можно сделать шорткод и удобно вставлять в записях свои любые уведомления.
Из него можно сделать гутенберг блок и удобно вставлять в свои записи.
Может быть у вас есть какие идеи?
Озвучивайте их в комментариях - в 17-й версии мы рассмотрим их и самые полезные войдут в ядро. Время еще есть.
Живая демка
Я перевёл на него дополнения Friends и допы что его расширяют, дополнение Groups Theme RePlace - все это сократило часть css и вообще - теперь не надо думать над цветом этих блоков - всё стандартно и полностью в экосистеме реколл.
Я счастлив 😇
Мне кажется заголовок уведомления стоит по умолчанию выравнивать по центру, как и сам контент
а иконки уменьшить