WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

admin_notices хук-событие . WP 2.0.11

Срабатывает во время вывода заметок (сообщений, ошибок) в верхней части страницы админ-панели. Прикрепляемая функция должна выводить HTML на экран.

Несмотря на то, что сообщение выводится под заголовком, технически это сообщение выводится раньше, оно просто затем перемещается под заголовок скриптом. Сделано это для удобства, чтобы заметку можно было вывести раньше чем выводится HTML код самой страницы.

Админ-заметки в WordPress (admin notises API)

Пример того как выглядит такая заметка:

А так выглядит её код:

<div id="message" class="notice notice-success is-dismissible">
	<p>Запись обновлена. <a href="http://wptest.ru/zagolovok/">Посмотреть</a></p>
</div>

Так выглядит шаблон таких сообщений

<div class="{class}"><p>{message}</p></div>
{class}

CSS классы блока. Обязательный класс notice и к нему добавляем, в зависимости от нужд:

  • notice-success - для успешных операций. Зеленая полоска слева.

  • notice-error - для ошибок. Красная полоска слева.

  • notice-warning - для предупреждений. Оранжевая полоска слева.

  • notice-info - для информации. Синяя полоска слева.

  • is-dismissible - добавляет иконку-кнопку "закрыть" (крестик в конце блока). Иконка добавляется через javascript. По клику на нее блок-заметка будет скрыт (удален), но это состояние не сохраняется, то есть при обновлении страницы блок снова будет отображаться.

class="notice notice-success is-dismissible" - пример всего набора классов.

Есть еще класс update-nag - это блок с оранжевой полоской. Будет расположен перед заголовком <h2>, а не после и будет иметь css свойство inline-block, а не block, т.е. не на всю ширину экрана.

Использовать этот тип не рекомендуется нигде.

До версии 4.7 были еще класса updated - то же что notice-success и error - то же что notice-error. Они все еще поддерживаются, но использовать их не рекомендуется.

{message}
Текст или HTML сообщения.
Аналоги события admin_notices

У этого хука есть заменители, аналоги, которые принято использовать для той же цели: вывести сообщение, но в других условиях:

  • network_admin_notices - используется для работы с мультисайтовой сборкой, сообщение будет выводиться для администратора сети.

  • user_admin_notices - используется для работы с мультисайтовой сборкой, сообщение будет выводиться для администратора сайта сети.

  • all_admin_notices - работает точно так же, как admin_notices, но имеет другое название. Наверное, для наглядности цели использования в коде плагина, также возможно в будущем будут работать в разных условиях.

Использование

add_action( 'admin_notices', 'action_function_name_11' );
function action_function_name_11(){
	// Действие...
}

Примеры

#1 Базовое использование

Представим, что мы пишем плагин и при обновлении на странице опций плагина нам нужно вывести сообщение "Настройки обновлены!". Для этого в функции обработки POST запроса, при успешном обновлении добавим функцию к событию 'admin_notices':

<?php
add_action( 'admin_notices', 'my_plugin_notice' );
function my_plugin_notice() {
	?>
	<div class="notice notice-success is-dismissible">
		<p>Настройки обновлены!</p>
	</div>
	<?php
}

Также, здесь мы можем использовать функцию локализации _e, чтобы сообщение можно было переводить:

<div class="notice notice-success is-dismissible">
	<p><?php _e( 'Настройки обновлены!', 'my-text-domain' ); ?></p>
</div>

Класс "updated" выведет сообщение с белым фоном и зеленой полоской слева.

#2 Вывод ошибки

Пример аналогичный первому, только тут выведем сообщение об ошибке.

add_action('admin_notices', 'my_plugin_error_notice');
function my_plugin_error_notice(){
	$message = "Ошибка сохранения";
	echo '<div class="notice notice-error is-dismissible"> <p>'. $message .'</p></div>';
}

Класс "error" выведет сообщение с белым фоном и красной полоской слева.

#3 Нестандартный блок

add_action('admin_notices', function(){
	echo '<div class="update-nag"><p>Моё Сообщение</p></div>';
});

Класс "update-nag" выведет сообщение с белым фоном и оранжевой полоской слева. Кроме того, блок будет расположен перед заголовком (тегом <h2>)

Список изменений

С версии 3.1.0 Введена.

Где вызывается хук

В файле: /wp-admin/admin-header.php
admin_notices
wp-admin/admin-header.php 292
do_action( 'admin_notices' );

Где используется хук в ядре WordPress

wp-admin/includes/admin-filters.php 105
add_action( 'admin_notices', 'default_password_nag' );
wp-admin/includes/admin-filters.php 106
add_action( 'admin_notices', 'new_user_email_admin_notice' );
wp-admin/includes/admin-filters.php 116
add_action( 'admin_notices', 'update_nag', 3 );
wp-admin/includes/admin-filters.php 117
add_action( 'admin_notices', 'paused_plugins_notice', 5 );
wp-admin/includes/admin-filters.php 118
add_action( 'admin_notices', 'paused_themes_notice', 5 );
wp-admin/includes/admin-filters.php 119
add_action( 'admin_notices', 'maintenance_nag', 10 );
wp-admin/includes/admin-filters.php 120
add_action( 'admin_notices', 'wp_recovery_mode_nag', 1 );
wp-admin/includes/admin-filters.php 143
add_action( 'admin_notices', array( 'WP_Privacy_Policy_Content', 'notice' ) );
wp-admin/includes/class-wp-privacy-policy-content.php 110
add_action( 'admin_notices', array( 'WP_Privacy_Policy_Content', 'policy_text_changed_notice' ) );
wp-admin/includes/ms-admin-filters.php 35
add_action( 'admin_notices', 'site_admin_notice' );
13 комментов
Полезные 3 Вопросы 1 Все