web-dev-qa-db-ja.com

Wp_footerフック関数の順序を設定する方法はありますか?

Wp_footer()にフックされた関数の順序を設定できるかどうか疑問に思いました。私はエコーする関数を作成しました:

<script> ajsfunction(); </script>

この関数のjsファイルもエンキューしてフッターに印刷しましたが、上記はjsファイルにリンクする前に印刷されているので機能しません。このスクリプトは特定のページでのみ実行されるわけではないためです。もの.

wp_footerでこれができない場合、キューに入れられたjsファイルの後にこのスクリプトタグを出力する方法はありますか?

前もって感謝します。

2
Pierre

推奨される方法は、エンキューしている.jsファイル内で関数を呼び出すことです。それができない理由はありますか?

スクリプト内からWPオプションなどの動的データにアクセスする必要がある場合は、 wp_localize_script を使用して、必要なデータでJavaScriptオブジェクトを初期化します。

$data = array('some_option' => get_option('an_option_from_my_theme'));

wp_enqueue_script('your_script_handle', 'path/to/the/script.js');
wp_localize_script('your_script_handle', 'my_theme_options', $data);

スクリプトでは、JavaScriptオブジェクトと同じようにデータにアクセスできます。

console.log(my_theme_options.an_option_from_my_theme);

  1. 自分のエンキューする別のJavaScriptファイル内にコードを配置し、プラグインをこのファイルの依存関係にします。

  2. WPがフッタースクリプトを出力した後、wp_footerフック内にコードを追加します。

    add_action('wp_footer', function(){
    
     ?>
     <script>
    
     // your javascript
    
     </script>
     <?php 
    
     }, 100);
    

    "100"は優先順​​位で、数字が大きいほど、アクションの実行優先順位が低くなります。スクリプトは "20"の優先順位で印刷されます

あなたがたくさんのjsコードを持っているなら、私は(1)で行きます、そうでなければインラインのjavascriptは問題ありません(2)。

2
onetrickpony

これを見てください。

http://codex.wordpress.org/Function_Reference/add_action

あなたは2つのフックされた機能に優先順位を設定することができます

add_action('wp_footer','your_func',100);
add_action('wp_footer','your_func1',200);
0
Rajeev Vyas