web-dev-qa-db-ja.com

管理スクリプトが印刷されないのはなぜですか 

管理領域でスクリプトをエンキュー/印刷しようとしています。しかし、彼らは現れないようです。

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に入れようとさえしました…それはなぜですか?どうやってデバッグできますか?

4
JM at Work

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

8
Chris_O

私はちょうどあなたの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' );
2
Chip Bennett

あなたのheader.php(またはヘッダ内の他の関数)がwp_headアクションフックを実行していることを確認してください。コードは次のようになります。

<?php wp_head() ?>
1
Dennis Hoppe

実際に私はタイプミスがありました

wp_register_script('jqeury-validate', 'http://ajax.aspnetcdn.com/ajax/jquery.validate
                      ^

しかし@Chris_Oと@Chip Bennettのすばらしい答えに感謝します。

1
JM at Work