Прицельное размещение скриптов на экранах админки WordPress

  • 13.04.16
  • 21:52
  • 3799
  • 0

Ограничить выдачу скриптов и стилей определённым экраном можно так:

Список идентификаторов экранов WordPress приведён в конце заметки.

Идентификаторы пользовательских экранов возвращаются функциями add_menu_page(), add_submenu_page() и её производными. Эти функции вызываются по хуку 'admin_menu' на ранних этапах загрузки WordPress, поэтому ко времени выполнения 'admin_enqueue_scripts' идентификаторы уже известны.

Поэтому создание экрана можно организовать так:

При использовании анонимных функций обработчик 'admin_enqueue_scripts' может быть задан сразу после создания экрана:

Замечание 1: в обработчике 'admin_menu' вызывать get_current_screen() нет смыла — здесь текущий экран ещё не определён.

Замечание 2: хук "admin_print_scripts-{$scr_id}" может показаться более удобным, т. к. активируется только на экране $scr_id, но использовать его всё-равно не следует: разработчики WordPress прямо заявляют об этом на странице хука 'admin_print_scripts'.

В то же время это не означает, что плагин не будет работать: в текущей версии WordPress (4.5) выдача скриптов и стилей из очередей происходит после обоих этих действий по хуку 'admin_print_scripts' с приоритетом 20. Поэтому при регистрации скриптов в обработчиках "admin_print_scripts-*" работать плагин будет, но при дальнейшем развитии WordPress сохранение такой ситуации не гарантировано, и после очередного обновления CMS плагин рискует оказаться неработоспособным (если, конечно, ограничение рамками 'admin_enqueue_scripts' не будет снято).

Замечание 3: в консоли управления мультисайтом (экраны /wp-admin/network/*) идентификаторы экранов оканчиваются суффиксом '-network'. Функции типа add_submenu_page() этот суффикс не добавляют. Поэтому, если плагин предназначен для работы исключительно с целым мультисайтом (имеет опцию Network: true в заголовке), суффикс приходится добавлять вручную:

Идентификаторы экранов WordPress

Идентификаторы стандартных экранов постоянны, их можно задавать строкой непосредственно в обработчиках 'admin_enqueue_scripts'.

название экрана идентификатор
экран редактирования термов таксономии $taxonomy "edit-{$taxonomy}"
идентификатор одинаков как для экрана терма, так и для экрана самой таксономии;
посты пользовательских типов $post_type
все посты "edit-{$post_type}"
редактирование поста $post_type
страницы (посты типа ‘page’)
все страницы 'edit-page'
экран редактирования страницы 'page'
записи (посты типа ‘post’)
все записи 'edit-post'
экран редактирования записи 'post'
штатные таксономии
метки 'edit-post_tag'
рубрики 'edit-category'
консоль 'dashboard'
обновления 'update-core'
опции
общие 'options-general'
написание 'options-writing'
чтение 'options-reading'
обсуждение 'options-discussion'
медиафайлы 'options-media'
постоянные ссылки 'options-permalink'
инструменты
все инструменты 'tools'
импорт 'import'
экспорт 'export'
пользователи
все пользователи 'users'
новый пользователь 'user'
профиль 'profile'
редактирование пользователя 'user-edit'
плагины
установленные 'plugins'
добавить новый 'plugin-install'
редактор 'plugin-editor'
внешний вид
темы 'themes'
настроить 'customize'
виджеты 'widgets'
меню 'nav-menus'
редактор 'theme-editor'
комментарии
комментарии 'edit-comments'
экран редактирования комментария 'comment'
медиафайлы
библиотека 'upload'
добавить новый 'media'

PS.: на момент данной редакции этой заметки последней версией WordPress является 4.5.

Оставить комментарий

Добавить комментарий