admin_print_scripts-(hook_suffix)
Срабатывает при подключении скриптов на определённой странице админки.
Используется, когда необходимо вывести специфичные скрипты только на нужных страницах админки.
Позволяет добавлять 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_mypluginmyplugin_page_settings.
Примеры
#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 | Введена. |
Где вызывается хук
do_action( "admin_print_scripts-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
do_action( "admin_print_scripts-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
Где используется хук в WordPress
add_action( 'admin_print_scripts-index.php', 'wp_localize_community_events' );
add_action( 'admin_print_scripts-post.php', 'wp_page_reload_on_back_button_js' );
add_action( 'admin_print_scripts-post-new.php', 'wp_page_reload_on_back_button_js' );
add_action( "admin_print_scripts-{$page}", array( $this, 'js_includes' ) );
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );