admin_print_scripts-(hook_suffix)хук-событиеWP 2.1.0

Срабатывает при подключении скриптов на определённой странице админки.

Используется, когда необходимо вывести специфичные скрипты только на нужных страницах админки.

Позволяет добавлять js код или файлы в <head> часть админки, основываясь на значении hook_suffix, которое указывает на конкретную страницу админки (например, post.php, toplevel_page_myplugin).

Это событие происходит до admin_enqueue_scripts, но используется реже, так как чаще применяется admin_enqueue_scripts с проверкой параметра $hook_suffix.

Используйте хук load-(pagenow), когда нужно что-то сделать при загрузке страницы ядра.

Используйте хук load-(page_hook), когда нужно что-то сделать при загрузке страницы плагина (кастомно зарегистрированной страницы).

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

add_action( 'admin_print_scripts-(hook_suffix)', 'wp_kama_admin_print_scripts_hook_suffix_action' );

/**
 * Function for `admin_print_scripts-(hook_suffix)` action-hook.
 * 
 * @return void
 */
function wp_kama_admin_print_scripts_hook_suffix_action(){

	// action...
}
$hook_suffix(строка)

Уникальный идентификатор текущей страницы админки. Используется в названии хука.

$hook_suffix может быть одним из значений глобальных переменных (в зависимости от типа страницы):

$hook_suffix = $page_hook;   // результат add_menu_page() и add_submenu_page()
// или
$hook_suffix = $plugin_page; // plugin_basename( $_GET['page'] )
// или
$hook_suffix = $pagenow;     // название php файла которые

Смотрите код wp-admin/admin.php

Список возможных значений динамического параметра $hook_suffix:

Для $pagenow

  • index.php — главная страница панели управления (Dashboard)
  • edit.php — список записей
  • post.php — редактирование записи
  • post-new.php — создание новой записи
  • edit-tags.php — управление метками и рубриками
  • upload.php — медиафайлы
  • media-new.php — загрузка нового медиафайла
  • edit-comments.php — комментарии
  • themes.php — темы оформления
  • customize.php — кастомайзер
  • widgets.php — виджеты
  • nav-menus.php — меню навигации
  • plugins.php — список плагинов
  • plugin-install.php — установка плагинов
  • users.php — список пользователей
  • user-new.php — добавление нового пользователя
  • profile.php — профиль текущего пользователя
  • edit.php — список страниц
  • edit.php — список записей произвольного типа
  • options-general.php — общие настройки
  • options-writing.php — настройки написания
  • options-reading.php — настройки чтения
  • options-discussion.php — настройки обсуждений
  • options-media.php — настройки медиафайлов
  • options-permalink.php — настройки постоянных ссылок
  • tools.php — инструменты
  • import.php — импорт
  • export.php — экспорт
  • admin.php — страницы плагинов и пользовательские страницы

Для $page_hook
Для кастомных страниц, добавленных через add_menu_page() или add_submenu_page(), создается уникальный $page_hook, который возвращается функций регистрации и выглядит как:

  • toplevel_page_myplugin
  • myplugin_page_settings.

Примеры

0

#1 Подключение скрипта только на странице настроек плагина

Добавим скрипт только на странице настроек, созданной через add_submenu_page().

add_action( 'admin_menu', 'my_plugin_admin_menu' );
function my_plugin_admin_menu() {
	$hook = add_submenu_page(
		'options-general.php',
		'My Plugin Settings',
		'My Plugin',
		'manage_options',
		'my-plugin',
		'my_plugin_settings_page'
	);

	add_action( "admin_print_scripts-{$hook}", 'my_plugin_admin_scripts' );
}

function my_plugin_admin_scripts() {
	wp_enqueue_script( 'my-plugin-script', plugins_url( 'script.js', __FILE__ ) );
}

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

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

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

В файле: /wp-admin/admin-header.php
admin_print_scripts-(hook_suffix)
wp-admin/admin-header.php 144
do_action( "admin_print_scripts-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
wp-admin/includes/template.php 2165
do_action( "admin_print_scripts-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores

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

wp-admin/includes/admin-filters.php 66
add_action( 'admin_print_scripts-index.php', 'wp_localize_community_events' );
wp-admin/includes/admin-filters.php 67
add_action( 'admin_print_scripts-post.php', 'wp_page_reload_on_back_button_js' );
wp-admin/includes/admin-filters.php 68
add_action( 'admin_print_scripts-post-new.php', 'wp_page_reload_on_back_button_js' );
wp-admin/includes/class-custom-image-header.php 88
add_action( "admin_print_scripts-{$page}", array( $this, 'js_includes' ) );
wp-includes/widgets/class-wp-widget-custom-html.php 76
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );
wp-includes/widgets/class-wp-widget-media.php 114
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );
wp-includes/widgets/class-wp-widget-text.php 67
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );