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_myplugin
myplugin_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' ) );