У меня есть две простые функции, материал нагрузки с помощью wp_enqueue_style()
и wp_enqueue_script()
, что - то вроде этих:
function admin_custom_css()
{ wp_enqueue_style( 'stylesheet_name', 'stylesheet.css') };
function admin_custom_js
{ wp_enqueue_script( 'javascript_file', 'script.js') };
... и несколько страниц администратора, созданных с помощью add_menu_page()
иadd_submenu_page()
function my_menu() {
add_menu_page('Page 1', 'bar', 'something', 'else', 'foo');
add_submenu_page( 'theme_menu', 'Subpage 1', 'Subpage', 'something', 'else', 'foo');
}
add_action('admin_menu', 'my_menu');
Как мне загрузить две мои функции только на этих страницах?
Прямо сейчас я использую:
add_action('admin_init', 'admin_custom_css' );
add_action('admin_init', 'admin_custom_js' );
Но он загружает мои файлы на каждую страницу администратора, что совсем не приятно.
Могу ли я сделать это с помощью одной простой строки functions.php
или поставить их в отдельности на своих страницах (я настоятельно предпочитаю первый вариант, так как мне придется редактировать множество функций создания страниц администратора).
Спасибо!
Ответы:
add_menu_page
иadd_submenu_page
оба возвращают «суффикс крючка» страницы, который можно использовать для идентификации страницы с определенными хуками. Таким образом, вы можете использовать этот суффикс в сочетании с перехватчиками переменныхadmin_print_styles-{$hook_suffix}
иadmin_print_scripts-{$hook_suffix}
специально предназначаться для этих страниц.Я считаю, что это чистый метод для добавления всего этого, потому что все это обрабатывается в одной функции. Если вы решили удалить эту функцию, просто удалите вызов одной функции.
источник
admin_print_scripts()
государств «admin_print_scripts
не следует использовать для блокировок стилей или скриптов .» Ответ @TomAuger на самом деле правильный, хотя и не оптимальный. Было бы полезно, если бы команда WP добавилаadmin_enqueue_scripts-(hookname)
хук, хотя ...Проблема с ответом @tollmanz заключается в том, что, поскольку вы подключаете хуки -print-styles и -print-scripts, вы должны сгенерировать HTML-код, чтобы загрузить свои скрипты вручную. Это не оптимально, так как вы не получите хорошую зависимость и управление версиями, которые поставляются с
wp_enqueue_script()
иwp_enqueue_style()
. Это также не позволяет вам положить вещи в нижний колонтитул, если это лучшее место для них.Итак, вернемся к вопросу OP: как лучше всего обеспечить, чтобы я мог ставить JS / CSS в очередь только на определенных страницах администратора?
Отключите действие «load - {$ my_admin_page}», чтобы делать что-то, только когда загружена страница администратора вашего конкретного плагина, а затем
Подключите действие «admin_enqueue_scripts», чтобы правильно добавить ваши
wp_enqueue_script
звонки.Похоже, немного боли, но на самом деле это очень легко реализовать. От верхней:
источник
load-$hook
хуку, который запускает моюoption_page_actions
функцию, к которой я могу добавить множество других хуков / фильтров и т. Д. Поскольку эти действия вызываются только на выбранной странице, хукам за пределами этой точки не нужно использовать хуки с пространством имен (как вы показали), что гораздо более эффективно и интуитивно понятно.Если вы используете
get_current_screen()
, вы можете определить, на какой странице вы находитесь. Существует пример в статье, старинной рукописи я связывал , который показывает , как использоватьget_current_screen()
сadd_options_page()
, этот метод будет работать на любой странице администратора.источник
Вы можете взять ответ и немного расширить его, допуская также условное использование ...
@tollmanz
Пример:
источник
Как упоминалось выше @ mor7ifer, вы можете использовать встроенную функцию WordPress get_current_screen () . Если вы перебираете выходные данные этой функции, например:
... вы заметите ключ под названием base . Я использую это, определяю, на какой странице я нахожусь, и ставлю в очередь, удаляю, как это:
источник
Я думал о том же самом. Есть современная версия, которая использует
admin_enqueue_scripts
:источник
Из документации :
То же самое с
admin_print_styles
.источник
источник
Чтобы сделать это, вы должны сначала найти имя страницы администратора. Добавить
admin_enqueue_scripts
сwp_die($hook)
и перейти к вашей конкретной странице плагина, вы увидите название страницы.Теперь скопируйте имя страницы и используйте его для загрузки скриптов на определенной странице.
источник