Sie können keine Skripte in die Fußzeile einreihen?

10

Der WordPress-Codex sagt :

( alte Codex-Seite )

$ in_footer

(boolean) (optional) Normalerweise werden Skripte in den Abschnitt eingefügt. Wenn dieser Parameter wahr ist, wird das Skript am Ende des Feldes platziert. Dazu muss das Thema den Hook wp_footer () an der entsprechenden Stelle haben. Beachten Sie, dass Sie Ihr Skript in die Warteschlange stellen müssen, bevor wp_head ausgeführt wird, auch wenn es in der Fußzeile platziert wird. (Neu in WordPress 2.8) Standard: false

Also fügte ich truenach jedem Skript hinzu src path:

/**
     * JavaScript
     */

    function my_scripts_method() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js', true );
        wp_enqueue_script( 'jquery' );
    }

    add_action('wp_enqueue_scripts', 'my_scripts_method');

    function media_queries_script() {
        wp_register_script( 'mediaqueries', get_template_directory_uri() . '/js/css3-mediaqueries.js', true );
        wp_enqueue_script( 'mediaqueries' );
    }

    add_action('wp_enqueue_scripts', 'media_queries_script');

    function custom_script() {
        wp_register_script( 'custom', get_template_directory_uri() . '/js/custom.js', true );
        wp_enqueue_script( 'custom' );
    }

    add_action('wp_enqueue_scripts', 'custom_script');

    function replace_script() {
        wp_register_script( 'replace', get_template_directory_uri() . '/js/jquery.ba-replacetext.min.js', true );
        wp_enqueue_script( 'replace' );
    }

    add_action('wp_enqueue_scripts', 'replace_script');

Die Skripte werden jedoch weiterhin in den Header aufgenommen.

Irgendwelche Vorschläge, um das zu beheben?

janoChen
quelle

Antworten:

18

Wo hast du deinen Code abgelegt?

  1. Die "wahren" Argumente gehen in die wp_register_script();, nicht in diewp_enqueue_script() ;

Die Funktionen sind:

<?php wp_enqueue_script('handle', 'src', 'deps', 'ver', 'in_footer'); ?>

Bedeutung

    <?php wp_enqueue_script('NameMySccript', 'path/to/MyScript', 
'dependencies_MyScript', 'VersionMyScript', 'InfooterTrueorFalse'); ?>

Z.B

<?php wp_enqueue_script('my_script', WP_CONTENT_URL . 'plugins/my_plugin/my_script.js', array('jquery', 'another_script'), '1.0.0', true); ?>

  1. Hat Ihr Thema <?php wp_footer(); ?> am Ende der Seite?

3. Fügen Sie die Aktion mit hinzu add_action('wp_print_scripts', 'your function');

Davon abgesehen wäre Ihre beste Vorgehensweise:

<?php  
if (function_exists('load_my_scripts')) {  
    function load_my_scripts() {  
        if (!is_admin()) {  
        wp_deregister_script( 'jquery' );  
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');  
        wp_enqueue_script('jquery');  
        wp_register_script('myscript', bloginfo('template_url').'/js/myScript.js'__FILE__), array('jquery'), '1.0', true );  
        wp_enqueue_script('myscript');  
        }  
    }  
}  
add_action('init', 'load_my_scripts');  
?>  

oder add_action('wp_print_scripts', 'dl_register_js');

krembo99
quelle
Danke, es funktioniert jetzt, aber ich habe festgestellt, dass das Einfügen trueentweder wp_enqueueoder gut wp-register_scriptfunktioniert.
janoChen
4
@ krembo99 Das wp_register_script()nimmt die gleiche Anzahl von Argumenten und beide fügen dem $wp_scriptsglobalen Array und dem dataSubarray hinzu. Kombiniert die falschen Informationen mit der schrecklichen Lesbarkeit Ihrer Antwort, muss ich Ihnen eine -1 geben (wird bei Nacharbeit entfernt).
Kaiser
1
Für mich war das fehlende Puzzleteil <?php wp_footer(); ?>in der Seitenvorlage nicht vorhanden. Danach hat der trueParameter in wp_enqueue_scriptseine Arbeit erledigt.
Joehanna
6

Sie übergeben einen Bool-Wert an den Abhängigkeitsparameter. Versuche dies:

 wp_enqueue_script(
      'replace', 
       get_template_directory_uri().'/js/jquery.ba-replacetext.min.js',
       array('jquery'), 
       '', 
       true
);
Brian Fegter
quelle
2
Dies ist technisch die richtige Antwort auf seine Frage, basierend auf dem Code in der Frage.
AndyWarren
4

Ich hatte das gleiche Problem und nach einiger Suche fehlte mir diese Funktion in meinem benutzerdefinierten Thema:

 <?php wp_footer();?>
ImFarhad
quelle
3

Ich möchte die Antwort hier vereinfachen. Wenn Sie wp_enqueue_script oder wp_register_script verwenden, um ein Skript in die Fußzeile zu laden, müssen Sie sicherstellen, dass Sie auch die anderen Parameter einschließen, auch wenn diese leer sind.

Ich habe es versucht..

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js',  true);

Was nicht funktioniert hat, wie @janoChen bemerkt hat. Wordpress fordert

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

Sie müssen also '',für die Parameter, die Sie nicht verwenden, angeben, wenn Sie die Funktion inline deklarieren möchten. Daher funktioniert der folgende Code wie geplant.

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', '', '', true);

Anschließend können Sie die Funktion in einem Array-ähnlichen Format deklarieren, wie es @Brian Fegter zeigt.

Andrew-ThinkUp
quelle
Sie müssen die leeren Zeichenfolgen nur dort angeben, wo Platzhalter benötigt werden.
s_ha_dum
Ah ja! Natürlich nur '',dort , wo Parameter erforderlich sind, nicht optional.
Andrew-ThinkUp
2

Wenn Sie ein Skript in die Kopfzeile einreihen, aber eine Abhängigkeit von einem Skript in der Fußzeile deklarieren, verschiebt WordPress das Fußzeilenskript in die Kopfzeile, um es den abhängigen Skripten zur Verfügung zu stellen.

user3765755
quelle
1

Laut der offiziellen WordPress-Dokumentation (Zuletzt überprüft - Mai 2018):

https://developer.wordpress.org/reference/functions/wp_enqueue_script/

und persönliche Erfahrung von 7+ Jahren.

  1. Sie sollten versuchen, immer die Funktion ' wp_enqueue_scripts ' zu verwenden, um eine bessere Kompatibilität mit installierten Plugins / Themes zu erzielen .

     add_action('wp_enqueue_scripts','your_plugin_enqueue');
  2. Weitere Informationen zur Verwendung offizieller Dokumente finden Sie hier

       /**** wp_register_script, wp_enqueue_script, wp_dequeue_script ***
    
             *** Personal recommendation
             *  - I strongly recommend registering all scripts before enqueueing,
             *  again -> for better compatibility with other developers. 
             *  :::: For example, so others could manipulate the position 
             *       of your scripts using the wp_dequeue_*type* method. 
             *       (wp_dequeue_script, wp_dequeue_style,...)
    
             *** Official Docs
             *   $in_footer
             *      - (bool) (Optional) Whether to enqueue the script before </body> instead of in the <head>. Default 'false'.
             *      - Default value: false
             *
             ***/
    
             // examples:
    
      function your_plugin_enqueue(){
    
    
    
             wp_dequeue_script('some_script(s)'); // remove conflicting script
    
             wp_register_script( $handle, $src, $deps, $ver, $in_footer=true ); 
             wp_enqueue_script($handle);
             wp_register_script('some_script(s)', $src, $deps, $ver, $in_footer=true);  // re-enqueue scripts after yours for example to elimination of conflicts
    
             wp_enqueue_script('some_script(s)');
    
      }
    
    
      add_action('wp_enqueue_scripts','your_plugin_enqueue');

PS Wenn Sie diese Antwort nützlich finden, geben Sie ihr bitte ein '▲' ( ArrowUP ). Wenn Sie der Meinung sind, dass sie verbessert werden kann, kommentieren Sie sie bitte unten.

SergeDirect
quelle