Хук admin_print_footer_scripts
в WordPress используется для добавления JavaScript-кода в подвал административной панели. Он срабатывает в самом конце загрузки страницы после подключения всех остальных скриптов, что делает его идеальным для добавления инлайн-скриптов и данных, которые необходимо использовать на отдельных страницах панели управления.
do_action( ‘admin_print_footer_scripts’ )
Назначение и описание
Функция do_action( 'admin_print_footer_scripts' )
вызывает этот хук и позволяет вставить в подвал панели управления любые скрипты или данные, подготовленные для использования на административных страницах WordPress. Чаще всего он применяется для добавления JavaScript-кода на конкретные страницы, изменяя функционал интерфейса или добавляя дополнительные инструменты.
Особенности:
- Срабатывает в конце подвала — позволяет быть уверенным, что все остальные скрипты уже загружены.
- Контроль страницы — можно ограничить выполнение кода на нужной странице админки, проверив текущий экран.
Пример базового использования:
function my_custom_admin_footer_script() {
echo "<script type='text/javascript'>console.log('Скрипт в подвале админки');</script>";
}
add_action( 'admin_print_footer_scripts', 'my_custom_admin_footer_script' );
Проверка страницы перед выводом кода
Часто требуется, чтобы скрипт выполнялся только на определенной странице, например, на странице редактирования кастомного типа записи. Ниже приведен пример с проверкой, является ли текущая страница целевой.
function custom_footer_js() {
// Проверка на наличие нужного типа записи в параметрах URL
if (!isset($_GET['post_type']) || $_GET['post_type'] !== 'my_custom_post') {
return;
}
// Получаем информацию о текущем экране
$screen = get_current_screen();
if ($screen->base !== 'edit') {
return;
}
echo "<script type='text/javascript'>console.log('Скрипт для кастомного типа записи');</script>";
}
add_action( 'admin_print_footer_scripts', 'custom_footer_js' );
Хук admin_print_footer_scripts-$hook_suffix
Для использования хука на определенной странице можно указать hook_suffix
, заменяя $hook_suffix
на идентификатор страницы. Например, если нужно добавить скрипт только для главной страницы настроек плагина, следует использовать admin_print_footer_scripts-settings_page_my_plugin_page
.
function plugin_footer_script() {
echo "<script type='text/javascript'>console.log('Скрипт на странице настроек плагина');</script>";
}
add_action( 'admin_print_footer_scripts-settings_page_my_plugin_page', 'plugin_footer_script' );
Пример: Добавление jQuery на страницу создания новой записи
В этом примере мы добавим скрипт, который будет выполнять jQuery-код на странице создания записи. Этот скрипт сработает только на post-new.php
.
<?php
add_action( 'admin_print_footer_scripts', 'new_post_footer_script' );
function new_post_footer_script() {
// Проверка: выполняем код только на странице создания новой записи
if ($GLOBALS['pagenow'] !== 'post-new.php') {
return;
}
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
console.log('Кастомный скрипт для страницы создания записи');
// Ваш jQuery-код
});
</script>
<?php
}
Пример: Включение JavaScript для определенного плагина
В следующем примере мы добавим JavaScript на страницу настроек конкретного плагина, чтобы загрузить URL-адрес плагина в переменную для дальнейшего использования.
<?php
function my_plugin_footer_js() {
if (get_current_screen()->id !== 'settings_page_my_plugin_options') {
return;
}
?>
<script type="text/javascript">
var pluginBaseURL = '<?php echo esc_url( plugin_dir_url( __FILE__ ) ); ?>';
console.log('Базовый URL плагина:', pluginBaseURL);
</script>
<?php
}
add_action( 'admin_print_footer_scripts', 'my_plugin_footer_js' );
Частые ошибки и рекомендации
- Использование
get_current_screen()
. Эта функция может вызывать ошибку на некоторых страницах админки, поэтому важно использовать её с осторожностью и выполнять основные проверки до вызова. - Проверка текущего экрана. Всегда ограничивайте выполнение кода на нужных страницах, чтобы избежать ненужной загрузки скриптов.
Заключение
Хук admin_print_footer_scripts
предоставляет гибкие возможности для работы с административными страницами WordPress, позволяя добавлять JavaScript-код непосредственно перед закрытием </body>
в подвале.