依存関係のないwp_add_inline_script


11

ページのフッターに挿入したいJavaScriptスニペットがあります。これはトラッキングコードです。Googleアナリティクスに似ているとしましょう。依存関係はなく、スタンドアロンのスニペットです。

私はこのようなことができます

function render_tracking_code(){
    wp_enqueue_script( 'depends-js', 'https://rdiv.com/dummy.js', array(), '0.01', true );
    wp_add_inline_script( 'depends-js', 'aWholeBunchOfJavascriptCode' );
}
add_action( 'wp_enqueue_scripts', 'render_tracking_code' );

少しばかげているようですが(dummy.jsは空のファイルです)、動作します。依存関係をスキップする方法はありますか?

回答:


13

wp_add_inline_style() -依存なし

wp_add_inline_style()ソースファイルの依存関係なしに使用することができます。

ここだ @Flixからは:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );
wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

これをwp_enqueue_scriptsアクションにフックします。

wp_add_inline_script() -依存なし

チケット#43565によると、同様のものがwp_add_inline_script()バージョンでサポートされます(コメントでの検証について@ MarcioDuarte、@ dev101、@ DaveRomseyに感謝します):4.9.9 5.0

wp_register_script( 'dummy-handle-header', '' );
wp_enqueue_script( 'dummy-handle-header' );
wp_add_inline_script( 'dummy-handle-header', 'console.log( "header" );' );

これにより、ヘッダー内、つまり<head>...</head>タグの間で次のように表示されます。

<script type='text/javascript'>
console.log( "header" );
</script>

フッターに表示するには:

wp_register_script( 'dummy-handle-footer', '', [], '', true );
wp_enqueue_script( 'dummy-handle-footer'  );
wp_add_inline_script( 'dummy-handle-footer', 'console.log( "footer" );' );

$position入力引数のデフォルトwp_add_inline_script()'after'です。'before'値は、上記のそれを印刷します'after'


wp_add_inline_script()依存関係なしがまだ4.9.9のために検討されている、それは必ずしもそれが追加されることを意味するものではありません。したがって、この機能を使用する前に確認を待つのが賢明です。
Marcio Duarte

1
WP 5.0から移行できます。
Dave Romsey、

誰かがここから私のコメントを削除しました(私はそれが実際にWP 5.0+で機能することを確認しました)、1か月後、私は実際にこのコードを再び必要とし、グーグル検索し、この回答を見つけ、一目でスイープしましたが、コメントが見つからず、移動しました他の結果へ。1時間後、私はここに戻りました。これが私が探していた答えであることに気付きました。モデレーターへ:私の有用なコメントは削除しないでください。コメントは、他のユーザーだけでなく、MEだけでなく、将来の参照やリマ​​インダーにもなります。ありがとうございました。
dev101

残念ながら、私はバージョン4.9.xを使用する必要があります。
Lucas Vendramini、

5

更新: WordPressは、v5.0で依存関係のないインラインスクリプトとスタイルを追加するためのサポートを追加しました。実装については@birgireの回答を参照してください。

を使用する場合wp_add_inline_script()WP_Scripts::print_inline_script()最終的にはインラインスクリプトの出力に使用されます。設計上、print_inline_script()有効な依存関係が必要です$handle

この場合は依存関係wp_add_inline_script()がないため、ジョブに適したツールではありません。偽の依存関係ファイル(および望ましくない追加のHTTPリクエスト)を作成する代わりに、wp_headまたはwp_footerを使用してインラインスクリプトを出力します。

add_action( 'wp_head', 'wpse_add_inline_script' );
function wpse_add_inline_script() {
  echo '<script>' . PHP_EOL;

  // aWholeBunchOfJavascriptCode

  echo '</script>' . PHP_EOL;
}

一般に、JavaScriptを.jsファイルに追加wp_enqueue_script()し、wp_enqueue_scriptsフックを使用してエンキューする必要があります。を使用して、スクリプトでデータを使用できるようにすることができますwp_localize_script()。ただし、インラインでスクリプトを追加する必要がある場合もあります。


0

これを行う1つの方法は、スクリプトを<script>タグ内にエコーする関数を作成し、それをwp_print_footer_scriptsアクションにフックすることです。厳密に制御できないものはすべてエスケープするように注意する必要がありますが、それ以外の場合は、これは一般的に安全で簡単な方法です。

例えば:

add_action( 'wp_print_footer_scripts', function () { 
    ?>
    <script>
        (function myFunction() { 
            /* your code here */
        })();
    </script>
<?php 
} );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.