Die WP.SE-Community hat immer empfohlen , Skripte in einem Thema / einer Vorlage (und ebenso sowie für Stylesheets) zu verwenden wp_register_script
und wp_enqueue_script
hinzuzufügen .wp_register_style
wp_enqueue_style
So registriere ich meine Skripte und stelle sie in die Warteschlange ...
Zuerst füge ich so etwas in functions.php hinzu
add_action('init','wpse54189_register_script');
function wpse54189_register_script(){
//Register scripts
wp_enqueue_script( 'jquery' );
wp_register_script( 'aahan_bootstrap_transition', get_template_directory_uri().'/js/bootstrap-transition.js');
wp_register_script( 'aahan_bootstrap_carousel', get_template_directory_uri().'/js/bootstrap-carousel.js', array('aahan_bootstrap_transition'));
wp_register_script( 'wpse54189_ajax_comment', get_template_directory_uri().'/js/no-reload-comments.js');
}
Rufen Sie es dann in einer Vorlagendatei (z. B. header.php) wie folgt auf
<?php wp_enqueue_script( 'aahan_bootstrap_carousel' ); ?>
<?php wp_enqueue_script( 'wpse54189_ajax_comment' ); ?>
Wie kann ich nun "bedingte JavaScript-Dateien" registrieren und in die Warteschlange stellen, die von bestimmten Browsern erkannt werden sollen? Zum Beispiel:
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
Wie registriere ich mich und stelle ihn richtig in die Warteschlange?
PS: Ich verwende das Reddle-Thema , das von den Theme Wranglern bei Automattic entwickelt wurde. Und die header.php des Themas verwendet direkt den oben genannten Code - dh er befindet sich nicht in der Warteschlange. Heißt das, es ist der einzige Weg, dies zu tun?
quelle
Antworten:
WP_Scripts
undWP_Styles
Klassen sind hinterwp_enqueue_script
undwp_enqueue_style
Funktionen. Wenn Sie sich die Klassenimplementierung ( Skripte und Stile ) ansehen, werden Sie feststellen, dass dieWP_Scripts
Klasse keine bedingten Skripte unterstützt, aber! Sie können sehen, dass dasWP_Styles
tut! Das Problem ist,wp_enqueue_style
dass Sie die Bedingung nicht einrichten können.Also müssen wir einen kleinen Hack machen:
Ein solcher Hack möglich geworden, weil alle registrierten Stile in gespeichert sind
registered
FeldWP_Styles
Klasse. Jeder registrierte Stil ist ein Objekt der_WP_Dependency
Klasse, mit dem Sie zusätzliche Daten hinzufügen können.Leider funktioniert dieser Hack nicht für Skripte.
Zusätzliche Informationen:
Ich habe gestern Abend den Code in Aaron Campbells Essence Theme durchgesehen und festgestellt, dass er sowohl ein browserbedingtes Skript als auch einen Stil aufruft.
Es gibt auch ein Ticket und einen Patch, aber es ist noch nicht im Kern . Natürlich funktioniert das bedingte Skript ohne den Patch nicht. Beachten Sie jedoch, dass Sie die Methode add_data direkt in Ihrer Funktion verwenden können, die an die
wp_enqueue_scripts
Aktion angehängt ist .quelle
Unfortunately this hack is not working for scripts.
Oh ... das ist scheiße! Sieht so aus, als wäre der einzige Weg so, wie er ist. :( Danke übrigens für den Hack. :)