Вспомогательная функция для уведомлений администратора
Если вы занимаетесь созданием плагинов или даже тем, если на то пошло, и включаете объектно-ориентированные методы в свою работу, то вы, вероятно, сталкивались с сериализацией того или иного типа. И один из аспектов сериализации в том, что она требует некоторой обратной связи для пользователя.
Это может быть сообщение об успешном завершении, сообщение об ошибке или сообщение, просто предупреждающее пользователя о том, что что-то пошло не так или, возможно, что-то следует обновить.
В любом случае, WordPress предоставляет все необходимые нам возможности; однако мы можем сделать это еще проще для себя, написав вспомогательную функцию для уведомлений администратора. Это тоже просто.
Уведомления администратора: вспомогательная функция
Когда дело доходит до написания уведомлений администратора, важно ознакомиться с соответствующим крючком.
Оттуда вам также необходимо знать следующие имена классов:
- уведомление-ошибка
- уведомление-успех
- уведомление-предупреждение
- уведомление-информация
При этом можно написать вспомогательную функцию, которая использует вышеуказанный хук и анонимную функцию (или замыкание) для достижения именно того, что вам нужно. Но сначала обратите внимание на следующее:
Анонимные функции, также известные как замыкания, позволяют создавать функции без определенного имени. Они наиболее полезны в качестве значений параметров обратного вызова, но у них есть много других применений.
С учетом сказанного у вас должно быть все, что вам нужно, чтобы написать свой помощник, и иметь представление о том, когда его очищать.
Во- первых, вспомогательная функция:
<?php
/**
* Provides an easy eay to display an administration notice based on the incoming
* class and message.
*
* @param string $class the class to add to the notice (warning, error, success)
* @param string $message the message to display in the administration notice area
*/
protected function displayAdminNotice($class, $message)
{
add_action(
'admin_notices',
function() use ($class, $message) {
printf(
'<div class="%1$s"><p>%2$s</p></div>',
esc_attr($class),
esc_html($message)
);
}
);
}
Далее предположим, что выполняемый запрос содержит недопустимые данные. Чтобы справиться с этим, вы должны использовать вышеупомянутый помощник следующим образом:
<?php
if (!$this->hasValidInput()) {
$this->displayAdminNotice(
'notice notice-error',
'You must specify a valid email address and license key.'
);
}
С другой стороны, допустим, все работает нормально:
<?php
if (update_option('acme-option', $values)) {
$this->displayAdminNotice(
'notice notice-success',
'The options were updated successfully!'
);
}
Как видите, эта функция использует нативные хуки WordPress, возможности PHP, а также создает метод, который можно тестировать, что имеет значение, если вы хотите писать тестируемые веб-приложения в WordPress.
И даже если нет, у вас есть более простой способ сделать ваш код немного более СУХИМ, чем это было раньше.