Как разработчик тем и плагинов в WordPress, я часто предоставляю дополнительную информацию для моих пользователей после того, как они активизируют свою тему или плагин. Например, когда пользователь устанавливает и активизирует плагин, он уведомляет их, что они должны предоставить какую либо информацию, чтобы плагин работал. Кроме того, если их PHP версия является слишком старой, плагин может предложить пользователю установить новую версию PHP. Уведомляя пользователя об этих действиях является важной частью успешного опыта пользователя.
Для этого я использовал встроенный крюк admin_notices
, чтобы напечатать уведомление на всех страницах администратора. Тем не менее, эти уведомления, как правило, загромождают и иногда раздражают пользователя и, таким образом, получается наоборот наших намерений. Поэтому для меня было важно, позволить пользователям отклонить эти уведомления. Проблема заключалась в том, что WordPress не предоставляет интерфейс для выполнения этого.
Начиная с версии 4.2, WordPress поддерживает неотстранимые уведомления администратора. К сожалению, освобождение не является постоянным. Снятые уведомления будут появляться снова, когда пользователь перезагружает страницу или перейдет на другую страницу администратора.
С этой целью был разработал wp-admin-notifications – простой скрипт, который позволяет легко добавлять статические/неотстранимые уведомления администратора с одной строкой кода. Сценарий также предлагает дополнительные возможности для дальнейшей настройки поведения уведомления.
В следующем учебнике вы узнаете, как вы можете добавить статические и неотстранимые уведомления с помощью wp-admin-notifications.
Добавление статического уведомления
Добавление статического уведомления администратора в WordPress с помощью wp-admin-notifications, так же просто, как сделать единый вызов функции wp_admin_notification()
. Как минимум, эта функция принимает 3 параметра – $handle
, $content
и $type
.
$handle
используется для идентификации уведомления (далее мы будем обсуждать это в контексте неотстранимые уведомления).
$content
используется в качестве содержания уведомления, и принимает текст и HTML.
$type -
относится к типу уведомлении. Он принимает одну из строк success
, error
, info
или warning
.
Следующий пример выведет статическое уведомление об ошибке:
<?php wp_admin_notification( 'my-error-notice', __('Ой! Это <strong>ошибка</strong> в сообщении.','slug'), 'error' ); ?>
Добавление неотстранимых уведомлений
Четвертый аргумент позволяет превратить уведомление в неотстранимые. wp-admin-notifications делает удаление стойкими ко всем страницам администратора, сохраняя handle уведомлении в базе данных. Когда пользователь нажимает на кнопку закрыть, исполнение запросов производится в асинхронном режиме, чтобы сохранить handle уведомлении.
Следующий пример выведет неотстранимое предупреждающее уведомление:
<?php wp_admin_notification( 'my-warning-notice', __('Внимание, это <strong>предупреждение</strong> в сообщении.','slug'), 'warning', true ); ?>
Но что , если мы хотим показать закрытое уведомление? Например, когда пользователь удаляет плагин и устанавливает его еще раз, это имеет смысл, чтобы показать уведомление снова , даже если пользователь отклонил его ранее. Для этой цели можно использовать функцию wp_reset_admin_notification($handle)
, которая сбрасывает уведомление для данной handle. Вызов удалит данную handle из базы данных, если пользователь ранее отклонил его.
Например, следующий код сбросит уведомление о том, что соответствует handle 'my-warning-notice'
:
<?php wp_reset_admin_notification( 'my-warning-notice' ); ?>
Это хорошая практика, чтобы сделать вызов этой функции как часть деактивации плагина/темы. Это приведет к удалению следов из базы данных (если не существует другой плагин, который использует его).
Добавление уведомлений в многоузловые сети
В многоузлового среде WordPress, каждый сайт является его собственное отдельное лицо со своими собственными администрированием баз данных и таблиц. Кроме того, существует общий раздел, куда добавлены для администрирования сети, которая требует подключения к специальным крюкам действия. wp-admin-notifications будут печатать общесетевые уведомления, если 6 – й параметр установлен true
. Она делает это путем подключения к крючку network_admin_notices
.
Следующий пример печатает статическое уведомление об ошибке на всех сайтах, в том числе в области сетевого администрирования:
<?php wp_admin_notification( 'my-error-notice', __('Ой! Это <strong>ошибка</strong> в сообщении.','slug'), 'error', false, '', // Добавлен класс CSS true // Сделать в сети уведомления ); ?>
Настройка внешнего вида уведомлений
5 – ый аргумент функции позволяет добавлять дополнительный класс CSS к уведомлению. Это позволяет более детально настроить внешний вид уведомлений. Вы можете также расширить CSS специфичность, используя ID уведомлении. wp-admin-notifications использует handle уведомления в качестве атрибута ID элемента.
Например, чтобы изменить цвет фона следующего уведомления:
<?php wp_admin_notification( 'my-error-notice', __('Ой! это <strong>ошибка</strong> в сообщении.','slug'), 'error', false, 'my-notice', // Добавлен класс CSS ); ?>
Вы можете использовать следующий CSS:
.my-notice { background-color: red; } /* Или использовать идентификатор, чтобы увеличить специфичность */ #my-error-notice { background-color: red; }
Скорость и производительность
wp-admin-notifications инициирует только при наличии по крайней мере , 1 зарегистрированного уведомления. Таким образом, дополнительное воздействие производительности незначительна. Кроме того, если wp_reset_admin_notification($handle)
правильно используется, то база данных будет оставаться в стороне от каких – либо следов.
Вывод
С помощью wp-admin-notifications при добавлении статических / неотстранимых уведомлений становится легким. Если вы найдете ее полезной, пожалуйста, поделитесь этой статьи. Если у вас есть какие – либо дополнительные вопросы/запросы, пожалуйста, напишите их в комментариях. Благодарю!