webentwicklung-frage-antwort-db.com.de

Ich kann nicht erkennen, warum meine Skripte nicht geladen werden, wenn ich sie registriere und in die Warteschlange stelle

Ich versuche, "fest codierte" Aufrufe in meiner header.php zu ersetzen, indem ich sie in functions.php registriere und in die Warteschlange stelle. JQuery 1.8.3 wird wie gewünscht geladen, die anderen Skripte jedoch nicht. Folgendes verwende ich:

function puckpros_load_my_scripts() {  
    wp_deregister_script( 'jquery' );  
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');  
    wp_enqueue_script('jquery');  
    wp_register_script('menu', get_stylesheet_directory_uri().'/js/menu.js', array('jquery') );  
    wp_enqueue_script('menu');
    wp_register_script('kwicks', get_stylesheet_directory_uri().'/js/jquery.kwicks.js', array('jquery') );  
    wp_enqueue_script('kwicks');
    wp_register_script('equalheights', get_stylesheet_directory_uri().'/js/jquery.equalheights.js', array('jquery') );  
    wp_enqueue_script('equalheights');
}  

add_action('wp_enqueue_scripts', 'puckpros_load_my_scripts'); 

Da es sich um ein untergeordnetes Thema handelt, verwende ich get_stylesheet_directory_uri () und die Pfade zu den Dateien sind korrekt.

Ich bin sicher, dass es etwas Einfaches ist, aber ich kann nicht sehen, was ich falsch mache.

Vielen Dank.

EDIT

Wie unten von Chip vorgeschlagen, habe ich meine functions.php geändert, um den Aufruf von jquery zu eliminieren und die Registeraufrufe zu entfernen. Ich habe jetzt:

function puckpros_load_my_scripts() {  

     wp_enqueue_script('kwicks', get_stylesheet_directory_uri().'/js/jquery.kwicks.js', array('jquery') );

     wp_enqueue_script('equalheights', get_stylesheet_directory_uri().'/js/jquery.equalheights.js', array('jquery') );

     wp_enqueue_script('wslaunch', get_stylesheet_directory_uri().'/js/wsLaunch.js', array('jquery') );
}  

add_action('wp_enqueue_scripts', 'puckpros_load_my_scripts'); 

Aber mein Skript equalheights wird nicht ausgeführt, wenn ich es direkt in den Header lade:

<script type="text/javascript" src="<?php bloginfo('stylesheet_directory');?>/js/jquery.kwicks.js"></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory');?>/js/jquery.equalheights.js"></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory');?>/js/wsLaunch.js"></script>

Jetzt bin ich wieder ratlos. Ich würde es gerne "richtig machen" und in die Warteschlange stellen, aber ich kann es nicht zum Laufen bringen.

Danke für jede Hilfe.

1
user41091

Sie können nicht (naja, Sie können , aber wahrscheinlich treten Abhängigkeitsprobleme wie dieses auf) Deregistrieren Sie ein Skript bei wp_enqueue_scripts, das registered war und bereits als Abhängigkeit verwendet wurde.

Die beste Lösung besteht darin, den benutzerdefinierten jQuery-Code zu entfernen und sich nur auf die im Kern gebündelte jQuery zu verlassen. (Sie werden eine Menge Dinge kaputt machen, wenn Sie eine nicht-core-gebündelte Version von jQuery laden; insbesondere eine Version, die älter ist als die core- gebündelte Version.)

function puckpros_load_my_scripts() {  
    wp_enqueue_script('menu', get_stylesheet_directory_uri().'/js/menu.js', array('jquery') );  
    wp_enqueue_script('kwicks', get_stylesheet_directory_uri().'/js/jquery.kwicks.js', array('jquery') ); 
    wp_enqueue_script('equalheights', get_stylesheet_directory_uri().'/js/jquery.equalheights.js', array('jquery') ); 
}  
add_action('wp_enqueue_scripts', 'puckpros_load_my_scripts'); 

Hinweis: Der Einfachheit halber habe ich die wp_register_script()-Aufrufe entfernt. Sie sind in diesem Fall überflüssig.

Wenn Sie jedoch unbedingt die Registrierung von Core-Bundle-jQuery aufheben müssen , um Ihre eigene Version zu registrieren, versuchen Sie es unter init.

function pleasedonotderegistercorejquery() { 
    wp_deregister_script( 'jquery' );  
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');  
    wp_enqueue_script('jquery');  
}
add_action( 'init', 'pleasedonotderegistercorejquery' );
2
Chip Bennett