wake-up-neo.net

Problem beim Laden von Javascript in der Fußzeile

Ich habe ein kleines Plugin geschrieben, in das ich folgende Skripte geladen habe

wp_enqueue_script('jquery', plugins_url('/js/jquery.min.js', __FILE__),'','1.7',true);
wp_enqueue_script('new-cycle', plugins_url('/js/cycle.js', __FILE__),array( 'jquery' ),'1.0',true);
wp_enqueue_script('new-jcarousellite', plugins_url('/js/jcarousellite.js', __FILE__),array( 'jquery' ),'1.0',true);
wp_enqueue_script('new-fancybox', plugins_url('/js/fancybox.js', __FILE__),array( 'jquery' ),'1.0',true);

und ich habe auch einen Javascript-Code zum Aufrufen von Cycle- und Fancybox-Funktionen (mit Parametern/Optionen, die aus Optionen und post_meta-Tabellen geladen werden)

function front_js(){ ?>   
<script>
    $(document).ready(function(){
      $(".video-popup").fancybox();
      $(".video_msgs").cycle({speed:'<?php echo get_option("cycle_speed");?>'});
    });
    </script>
<?php }

dieser Code wird zur Fußzeile hinzugefügt, indem add_action('wp_footer', 'front_js'); verwendet wird.

Nun wird mein Javascript-Code vor allen benötigten Skripten wie geladen

<script>
$(document).ready(function(){
  $(".video-popup").fancybox();
  $(".video_msgs").cycle();
});
</script>
<script type='text/javascript' src='http://localhost/wordpress/wp-content/themes/twentyfifteen/js/functions.js?ver=20141212'></script>
<script type='text/javascript' src='http://localhost/wordpress/wp-content/plugins/myplugin/js/cycle.js?ver=1.0'></script>
<script type='text/javascript' src='http://localhost/wordpress/wp-content/plugins/myplugin/js/jcarousellite.js?ver=1.0'></script>
<script type='text/javascript' src='http://localhost/wordpress/wp-content/plugins/myplugin/js/fancybox.js?ver=1.0'></script>
<script type='text/javascript' src='http://localhost/wordpress/wp-content/plugins/myplugin/js/counter.js?ver=1.0'></script>

und Fehler geben $('...').fancybox() keine Funktion

Ich denke, es liegt daran, dass der Code vor der Datei fancybox.js geladen wird, in der diese Funktion geschrieben ist. Ich habe versucht, print_scripts-Funktionen zu verwenden, aber es wird empfohlen, dies nicht zu verwenden, und wp_enqueue_script funktioniert nur mit Dateien, die keinen benutzerdefinierten Javascript-Code haben.

Gibt es eine Methode zum Laden des benutzerdefinierten Codes nach dem Laden der erforderlichen Dateien oder eine andere Methode zum Beheben dieses Problems?.

Es funktioniert, wenn ich alle Dateien im Header lade, dann aber die Ladezeit der Seite erhöht, was ebenfalls kein guter Ansatz ist.

1
Vikram Singh

Versuchen Sie, den Code mit add_action('wp_footer', 'front_js', 99); in die Fußzeile einzufügen, wobei 99 die Reihenfolge angibt, in der die Funktionen ausgeführt werden. Jetzt sollte es ausgeführt werden, nachdem Ihre Skripte geladen wurden.

1
Stefan

Anstatt den Code in Funktion zu setzen und ihn mit wp_footer zu verknüpfen.

Sie können eine andere JS-Datei in Ihrem Plug-in-Ordner speichern und in die Warteschlange stellen wie andere Skripte, die Sie in die Warteschlange gestellt haben.

OR

<?php
function front_js() {
  if ( wp_script_is( 'jquery', 'done' ) ) {
?>
<script type="text/javascript">

$(document).ready(function(){
      $(".video-popup").fancybox();
      $(".video_msgs").cycle();
    });

</script>
<?php
  }
}
add_action( 'wp_footer', 'front_js' );
?> 
0