Почему не печатаются сценарии администратора
Я пытаюсь поставить в очередь/распечатать сценарии в административной области. Но они, похоже, не появляются.
add_action('admin_init', function() {
add_meta_box('portfolio-meta', 'Details', 'portfolio_metabox_details', 'portfolio');
wp_register_script('jqeury-validate', 'http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.min.js');
wp_enqueue_script('jquery-validate');
wp_register_script('ae-admin', get_bloginfo('template_directory') . '/js/admin.js', array('jquery', 'jquery-validate'));
wp_enqueue_script('ae-admin');
wp_localize_script('ae-admin', 'WpAjax', array(
'AjaxUrl' => admin_url('admin-ajax.php')
));
wp_register_style('ae-validate', get_bloginfo('template_directory') . '/css/validate.css');
wp_enqueue_style('ae-validate');
});
Но мой сценарий (admin.js
), похоже, не печатается. Я даже пытался поместить их в "init" вместо "admin_init", но все равно не вижу своих сценариев... это почему? Как я могу выполнить отладку?
4 answers
Используйте крючок admin_enqueue_scripts
вместо admin_init
Примечание: вы должны использовать крючки, которые нацелены на страницы администратора как можно более конкретно. например:
-
Плагины : Используйте крючок
admin_print_scripts-{plugin-page}
-
Темы : Используйте крючок
admin_print_scripts-{theme-page}
(где{theme-page}
- это любая строка, которую вы используете в вызовеadd_theme_page()
) -
Пользовательская страница редактирования типа записи : Используйте крючок
admin_print_scripts-edit.php
,
Для пользовательских типов записей внутри вашей функции сделайте что-то вроде следующее:
global $typenow;
if( 'portfolio' == $typenow ) {
// wp_enqueue_script() calls go here
}
(ч/тт31ос)
Я только что заметил, что ваш add_action()
звонок неверен. Вы должны передать ему обратный вызов, а не определение функции .
У вас есть:
add_action('admin_init', function() {
// function definition here
});
Вместо этого у вас должно быть:
function mytheme_enqueue_admin_scripts() {
// register/enqueue code goes here
}
add_action( 'hook_name', 'mytheme_enqueue_admin_scripts' );
Убедитесь, что ваш header.php (или другая функция в заголовке) запускает крючок действия wp_head. Код должен выглядеть следующим образом:
<?php wp_head() ?>
На самом деле у меня только что была опечатка
wp_register_script('jqeury-validate', 'http://ajax.aspnetcdn.com/ajax/jquery.validate
^
Но спасибо @Chris_o и @Chip Беннетту за их замечательные ответы