webentwicklung-frage-antwort-db.com.de

Warum werden Admin-Skripte nicht gedruckt? 

Ich versuche, Skripte im Admin-Bereich in die Warteschlange zu stellen/auszudrucken. Aber sie scheinen nicht zu erscheinen.

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

Aber mein Skript (admin.js) scheint nicht gedruckt zu werden. Ich habe sogar versucht, diese in 'init' anstelle von 'admin_init' zu setzen, aber ich sehe meine Skripte nicht ... warum ist das so? Wie kann ich debuggen?

4
JM at Work

Verwenden Sie den Haken admin_enqueue_scripts anstelle von admin_init

Hinweis: Sie sollten Hooks verwenden, die so spezifisch wie möglich auf Verwaltungsseiten abzielen. z.B.:

  • Plugins : Verwenden Sie den Hook admin_print_scripts-{plugin-page}
  • Themes : Verwenden Sie den Hook admin_print_scripts-{theme-page} (wobei {theme-page} die Zeichenfolge ist, die Sie im Aufruf add_theme_page() verwenden)
  • Benutzerdefinierte Nachbearbeitungsseite : Verwenden Sie den Haken admin_print_scripts-edit.php.

Führen Sie für benutzerdefinierte Beitragstypen in Ihrer Funktion Folgendes aus:

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

(h/t t31os )

8
Chris_O

Ich habe gerade bemerkt, dass Ihr add_action()-Aufruf falsch ist. Sie müssen einen Rückruf übergeben, nicht die Funktionsdefinition .

Du hast:

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

Stattdessen sollten Sie haben:

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

Stellen Sie sicher, dass Ihre header.php (oder eine andere Funktion in der Kopfzeile) den Aktions-Hook wp_head ausführt. Der Code sollte folgendermaßen aussehen:

<?php wp_head() ?>
1
Dennis Hoppe

Eigentlich hatte ich gerade einen Tippfehler

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

Aber danke @Chris_O & @Chip Bennett für die tollen Antworten

1
JM at Work