it-swarm.com.de

So fügen Sie der Fußzeile ein JavaScript-Snippet hinzu, für das jQuery erforderlich ist

Ich weiß, dass ich der Fußzeile von WordPress eine Skriptdatei hinzufügen kann, für die eine Abfrage mit folgendem Code erforderlich ist:

<?php
function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0',
       true);
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

Aber was ist, wenn ich nur einen normalen Ausschnitt von jquery inline hinzufügen möchte, keine Datei. Wie kann das gemacht werden?.

Bearbeiten

Ich weiß, dass ich dieses Skript verwenden kann, um der Fußzeile etwas hinzuzufügen:

<?php
function myscript() {
?>
<script type="text/javascript">
 // This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');

Aber wie gebe ich das Skript an, das verwendet wird erfordert jquery , um ausgeführt zu werden.

27
Saif Bechan

Der einfachste Weg, dies zu tun, ist eine Kombination aus wp_enqueue_script und den Fußzeilenaktionen, auf die Saif und v0idless bereits verwiesen haben. Ich verwende häufig jQuery in meinen Themes und Plugins, aber ich füge auch alle anderen Skripte in die Fußzeile ein.

Der beste Weg, um Dinge in die Warteschlange zu stellen, ist der folgende:

function myscript() {
?>
<script type="text/javascript">
  if ( undefined !== window.jQuery ) {
    // script dependent on jQuery
  }
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );

function myscript_jquery() {
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );

Dieser Code geht jedoch davon aus, dass Sie das Skript in die Warteschlange gestellt haben, d. H., Dass Sie dies in Ihrem eigenen Plugin oder Thema tun.

Momentan gibt es keine Möglichkeit, ein Inline-Skript in die WordPress-Fußzeile einzufügen und es auch mit Abhängigkeiten zu laden. Aber es gibt eine Alternative, wenn du willst.

Die Alternative

Wenn WordPress mit Skripten arbeitet, werden diese intern in ein Objekt geladen, um den Überblick zu behalten. Es gibt im Wesentlichen 3 Listen im Objekt:

  • eingetragen
  • warteschlange
  • erledigt
  • machen

Wenn Sie ein Skript mit wp_register_scripts() zum ersten Mal registrieren eingeben, wird es in die registrierte Liste aufgenommen. Wenn Sie das Skript wp_enqueue_script(), wird es in die Warteschlangenliste kopiert. Nachdem es auf die Seite gedruckt wurde, wird es der Fertigliste hinzugefügt.

Anstatt Ihr Fußzeilenskript in die Warteschlange zu stellen, um jQuery zu erfordern, können Sie document angeben, dass es jQuery verwenden muss, und einfach programmgesteuert überprüfen, ob jQuery geladen ist.

Dabei wird mit wp_script_is() überprüft, wo das Skript aufgelistet ist.

function myscript() {
    if( wp_script_is( 'jquery', 'done' ) ) {
    ?>
    <script type="text/javascript">
      // script dependent on jQuery
    </script>
    <?php
    }
}
add_action( 'wp_footer', 'myscript' );

Sie könnten können denselben Code verwenden, um jQuery auch zum Laden in die Fußzeile zu zwingen, aber ich habe das nicht getestet ... Ihre Laufleistung kann daher variieren.

29
EAMann

Seit WordPress 4.5 können Sie Inline-Skripte durch wp_add_inline_script() hinzufügen. Dieser Code hilft Ihnen dabei, der Fußzeile, für die jQuery erforderlich ist, ein JavaScript-Snippet hinzuzufügen

function enqueue_jquery_in_footer( &$scripts ) {

    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );

function theme_prefix_enqueue_script() {
   if(!wp_script_is('jquery', 'done')) {
     wp_enqueue_script('jquery');
   }
   wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );

wp_add_inline_script mit wordpress jquery

12

Verwenden Sie die Aktion wp_footer wie folgt:

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}
1
v0idless

Ich weiß,OPmöchte eine Anforderung für jQuery festlegen, und die Autoren von WordPress hätten zulassen sollen, dass Snippets neben Skriptdateien in die Warteschlange gestellt werden, haben dies jedoch nicht getan. Ich empfehle daher, nicht zu versuchen, dies zu erzwingen. Wenn Sie sich nicht wie ich mit der Warteschlange oder ihrer Reihenfolge herumschlagen möchten (weil ich andere Plugins verwende, die Skripte kombinieren und optimieren), ist die Antwort, die Aktion wp_footer wie folgt zu verwenden:

<?php

add_action(
    'wp_footer'
    , function() {
        ?>
        <script>
            if (window.jQuery) {
                // your snippet
            }
        </script>
        <?php
    }
    , 21 # after enqueued footer scripts
);
0
Walf