web-dev-qa-db-fra.com

Pourquoi les scripts d'administration ne sont pas imprimés 

J'essaie de mettre en file d'attente/d'imprimer des scripts dans la zone d'administration. Mais ils ne semblent pas apparaître.

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');
});

Mais mon script (admin.js) ne semble pas être imprimé. J'ai même essayé de mettre ceux-ci dans 'init' au lieu de 'admin_init' mais je ne vois pas mes scripts ... pourquoi est-ce? Comment puis-je déboguer?

4
JM at Work

Utilisez le hook admin_enqueue_scripts au lieu de admin_init

Remarque: vous devez utiliser des points d'ancrage qui ciblent les pages d'administration aussi précisément que possible. par exemple.:

  • Plugins : utilisez le hook admin_print_scripts-{plugin-page}
  • Thèmes : utilisez le hook admin_print_scripts-{theme-page} (où {theme-page} est la chaîne que vous utilisez dans l'appel add_theme_page())
  • Page d'édition personnalisée de post-type : utilisez le hook admin_print_scripts-edit.php,

Pour les types de publication personnalisés, dans votre fonction, effectuez les opérations suivantes:

global $typenow;
if( 'portfolio' == $typenow ) {
    // wp_enqueue_script() calls go here
}

(h/t t31os )

8
Chris_O

Je viens de remarquer que votre appel add_action() est incorrect. Vous devez lui transmettre un rappel et non la définition de la fonction .

Tu as:

add_action('admin_init', function() {
    // function definition here
});

Au lieu de cela, vous devriez avoir:

function mytheme_enqueue_admin_scripts() {
     // register/enqueue code goes here
}
add_action( 'hook_name', 'mytheme_enqueue_admin_scripts' );
2
Chip Bennett

Assurez-vous que votre header.php (ou une autre fonction de l’en-tête) exécute le hook d’action wp_head. Le code devrait ressembler à ceci:

<?php wp_head() ?>
1
Dennis Hoppe

En fait je viens d'avoir une faute de frappe

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

Mais merci @Chris_O, & @Chip Bennett pour leurs bonnes réponses

1
JM at Work