eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

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

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

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

Смотрите также: https://wpadmin.bracketspace.com/#notices

С WP 6.4 используйте wp_admin_notice() или wp_get_admin_notice(), чтобы сформировать HTML-код заметки.

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

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

HTML код заметки:

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

HTML шаблон таких сообщений:

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

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

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

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

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

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

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

  • notice-alt - к каждому из классов можно добавить этот класс, тогда фон будет подкрашен в соответствующий цвет.

class="notice notice-success notice-alt 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', 'wp_kama_admin_notices_action' );

/**
 * Function for `admin_notices` action-hook.
 * 
 * @return void
 */
function wp_kama_admin_notices_action(){

	// action...
}

Примеры

#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 313
do_action( 'admin_notices' );

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

wp-admin/includes/admin-filters.php 122
add_action( 'admin_notices', 'default_password_nag' );
wp-admin/includes/admin-filters.php 123
add_action( 'admin_notices', 'new_user_email_admin_notice' );
wp-admin/includes/admin-filters.php 133
add_action( 'admin_notices', 'update_nag', 3 );
wp-admin/includes/admin-filters.php 134
add_action( 'admin_notices', 'deactivated_plugins_notice', 5 );
wp-admin/includes/admin-filters.php 135
add_action( 'admin_notices', 'paused_plugins_notice', 5 );
wp-admin/includes/admin-filters.php 136
add_action( 'admin_notices', 'paused_themes_notice', 5 );
wp-admin/includes/admin-filters.php 137
add_action( 'admin_notices', 'maintenance_nag', 10 );
wp-admin/includes/admin-filters.php 138
add_action( 'admin_notices', 'wp_recovery_mode_nag', 1 );
wp-admin/includes/admin-filters.php 161
add_action( 'admin_notices', array( 'WP_Privacy_Policy_Content', 'notice' ) );
wp-admin/includes/class-wp-privacy-policy-content.php 115
add_action( 'admin_notices', array( 'WP_Privacy_Policy_Content', 'policy_text_changed_notice' ) );
wp-admin/includes/ms-admin-filters.php 32
add_action( 'admin_notices', 'site_admin_notice' );
12 комментариев
Полезные - 3 Все