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

27

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 spezifiziere ich das Skript, das verwendet wird, erfordert die Ausführung von jquery .

Saif Bechan
quelle
Es gibt keine eingebaute Funktion, die ich kenne, es gibt sie wp_register_scriptund es wp_enqueue_scriptgibt sie, aber Sie können sie mit jquery selbst überprüfen.
Wyck
2
Entschuldigung für die Ablehnung, aber ich glaube nicht, dass Sie meine Frage verstehen. Ich habe den Kodex gelesen und kenne die Option. Ich möchte jedoch keine wp_enqueue_scriptSkriptdatei in die Fußzeile einfügen, sondern einen Ausschnitt in die Fußzeile einfügen, für den eine Abfrage erforderlich ist. Ich habe die Antwort direkt aus dem Kodex runtergestimmt. Ich habe den Kodex gelesen und keine Antwort gefunden, deshalb stelle ich eine Frage. Wenn Sie mich erneut zum Codex weiterleiten, habe ich abgelehnt.
Saif Bechan
Danke wyck, ich denke das ist der Fall, danke dass du die Frage richtig verstanden hast. Ich denke, ich werde nur ein externes JS-Skript verwenden, um sicherzustellen, dass das Skript ausgeführt werden kann.
Saif Bechan

Antworten:

30

Der einfachste Weg, dies zu tun, ist tatsächlich eine Kombination aus wp_enqueue_scriptund den Fußzeilenaktionen, auf die Saif und v0idless bereits verwiesen haben. Ich verwende häufig jQuery in meinen Designs 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 folgender:

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 diejenige sind, die das Skript in die Warteschlange stellt, dh, Sie tun dies in Ihrem eigenen Plugin oder Thema.

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
  • getan
  • machen

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

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

Hiermit wird 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' );

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

EAMann
quelle
Wird das von Ihnen bereitgestellte Code-Snippet von den Entwicklungsstandards für WordPress-Plugins akzeptiert? Wenn ja, dann werde ich es in meinem Plugin verwenden ... Bitte gib mir eine Antwort auf diese ...
laraib
Der letzte Ausschnitt? Nein. WordPress-Plugins sollten immer die Skriptanforderungen in die Warteschlange stellen. Das Erzwingen des Ladens von jQuery außerhalb des Warteschlangensystems auf diese Weise sollte nur auf Ihrer eigenen Site erfolgen, auf der Sie 100% der Umgebung steuern. Es ist niemals angebracht, dass ein Plugin dies tut.
EAMann,
dann kannst du mir bitte ein funktionierendes Beispiel dafür geben ... ????
Laraib
Weil ich mein erstes WordPress-Plugin entwickle und ich würde es lieben, wenn es vom WordPress-Team akzeptiert wird. Bitte warten Sie auf eine Antwort von Ihnen. Sagen Sie dazu Ihre Meinung, damit ich mein Plugin erstellen und akzeptieren kann ...
Laraib
12

Seit WordPress 4.5 können Sie Inline-Skripte hinzufügen wp_add_inline_script(). 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

Dhinju Divakaran
quelle
1

Verwenden Sie die wp_footerAktion wie folgt:

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}
v0idless
quelle
1
Dies ist keine gute Antwort. Ich fragte, wie ich das Skript angeben könnte, das jQuery benötigt. Wenn auf dem Benutzer keine Abfrage ausgeführt wird, wird Ihre Implementierung nicht ausgeführt.
Saif Bechan
0

Ich weiß, dass OP eine Anforderung für jQuery festlegen möchte, und die Autoren von WordPress hätten zulassen sollen, dass Snippets neben Skriptdateien in die Warteschlange gestellt werden, aber sie haben dies 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 wp_footerAktion wie folgt zu verwenden :

<?php

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

Sie können die wp_footerAktion dazu verwenden. Überprüfen Sie den Codex für wp_footer .

Rutwick Gangurde
quelle
Ich weiß, aber wie können Sie angeben, dass das Skript, das Sie der Fußzeile hinzufügen, von jquery abhängt. Überprüfen Sie meine Bearbeitung, um genauer zu sein.
Saif Bechan
Haben Sie überhaupt die Mühe, den Kodex durchzulesen, bevor Sie die Antworten der Leute ablehnen? Hast du schon mal was über das in_footerArgument dazu gelesen wp_enqueue_script? Lesen Sie dies: codex.wordpress.org/Function_Reference/wp_enqueue_script . Hier erfahren Sie, wie Sie es mit der wp_footerAktion verwenden können.
Rutwick Gangurde