スクリプトをフッターにエンキューできませんか?


10

ワードプレスコーデックスは言う

旧コーデックスページ

$ in_footer

(ブール)(オプション)通常、スクリプトはセクションに配置されます。このパラメータがtrueの場合、スクリプトはの下部に配置されます。これには、テーマが適切な場所にwp_footer()フックを持っている必要があります。スクリプトがフッターに配置される場合でも、wp_headが実行される前にスクリプトをエンキューする必要があることに注意してください。(WordPress 2.8の新機能)デフォルト:false

だから私はtrue各スクリプトの後に追加しました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');

しかし、スクリプトはまだヘッダーに含まれています。

それを修正するための提案はありますか?

回答:


18

コードをどこに配置しましたか?

  1. 「真の」引数は、wp_register_script();ではなく、wp_enqueue_script() ;

関数は次のとおりです。

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

意味

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

例えば

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

  1. あなたのテーマは<?php wp_footer(); ?> ページの最後にありますか?

3.アクションを追加する add_action('wp_print_scripts', 'your function');

そうは言っても、あなたのベストプラクティスは:

<?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');  
?>  

または add_action('wp_print_scripts', 'dl_register_js');


おかげで、それは今働いているが、私は置くことに気づいたtrueのいずれかでwp_enqueue、またはwp-register_script仕事だけで罰金を。
janoChen

4
@ krembo99 wp_register_script()は同じ量の引数を取り、両方とも$wp_scriptsグローバル配列とサブ配列に追加されdataます。間違った情報とあなたの答えのひどい読みやすさを組み合わせて、私はあなたに-1を与えなければなりません(手直し時に削除されます)。
カイザー2013年

1
私にとって、欠けているパズルのピースは<?php wp_footer(); ?>ページテンプレートに存在していませんでした。その後、trueパラメーターwp_enqueue_scriptはその仕事をしました。
joehanna

6

依存関係パラメーターにブール値を渡しています。これを試して:

 wp_enqueue_script(
      'replace', 
       get_template_directory_uri().'/js/jquery.ba-replacetext.min.js',
       array('jquery'), 
       '', 
       true
);

2
これは、質問のコードに基づく彼の質問に対する技術的に正しい答えです。
AndyWarren 2018

4

同じ問題があり、検索を行った後、カスタムテーマにこの関数がありませんでした。

 <?php wp_footer();?>

3

ここで答えを簡単にしたいと思います。wp_enqueue_scriptまたはwp_register_scriptを使用してフッターにスクリプトをロードする場合は、他のパラメーターも空白であっても、必ず含める必要があります。

やってみた..

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

@janoChenが気づいたようにそれは機能しませんでした。ワードプレスは

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

その'',ため、関数をインラインで宣言する場合は、使用していないパラメーターを含める必要があります。したがって、以下のコードは計画どおりに機能します。

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

その後、@ Brian Fegterが示すような形式のような配列で関数を宣言できます。


空の文字列を提供する必要があるのは、プレースホルダーが必要な場合のみです。
s_ha_dum 2015

ああそう!もちろん、唯一'',のパラメータが必要な場合、オプションではありません。
Andrew-ThinkUp 2015年

2

スクリプトをヘッダーにエンキューし、フッターにエンキューされたスクリプトへの依存関係を宣言すると、WordPressはフッタースクリプトをヘッダーに移動して、依存するスクリプトで利用できるようにします。


1

WordPressの公式ドキュメントによると(最終チェック日-2018年5月):

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

そして7年以上の個人的な経験。

  1. あなたは常に ' wp_enqueue_scriptsインストールされているプラ​​グイン/テーマとの互換性を高めるために、」関数を。

     add_action('wp_enqueue_scripts','your_plugin_enqueue');
  2. 公式ドキュメントの使用方法について詳しくは、こちらをご覧ください

       /**** 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この回答が役に立ったと思われる場合は、「▲」(ArrowUP)を付けてください。改善できると思われる場合は、以下にコメントしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.