管理領域でスクリプトをエンキュー/印刷しようとしています。しかし、彼らは現れないようです。
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
)は印刷されないようです。私はスクリプトを見ていないのにadmin_initの代わりにinitに入れようとさえしました…それはなぜですか?どうやってデバッグできますか?
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
}
(h/t t31os )
私はちょうどあなたの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 Bennettのすばらしい答えに感謝します。