Google Page Insights の提案に従おうとすると、「JS レンダー ブロック」の推奨事項があり、それはjQuery
メイン ファイルに関連しています。
私のサイトでは、WordPress といくつかのプラグインを使用しています。プラグインの 1 つは、その JS をインラインでスローします。そのため、フッターにロードするように移動jQuery
するか、「遅延」モードを使用してロードするとjQuery is not defined
、インライン コードが起動されます。
jQuery
ドキュメントの最後でメイン ファイルが実行された後、すべてのインライン スクリプトを「キャッチ」して遅延させるためのグローバル ソリューションを見つけようとしていました。
私は私にとってうまくいく解決策を書きました。これは私の特定の状況では非常に簡単な解決策ですが、これをフィルターthe_content
またはウィジェット出力として作成できませんでした。これをグローバル ソリューションにしたいので、JS がどこかで起動することを心配する必要はありません。
それを機能させる方法はありますか?これまでのところ、ショートコードを実行するこの特定のケースのコードは次のとおりです。
/* Get shortcode HTML */
$widget_shortcode = do_shortcode($shortcode);
/* Take out all scripts into an array */
$delayed_scripts = array();
preg_match_all('#<script(.*?)</script>#is', $widget_shortcode, $match);
foreach ($match as $val){
$delayed_script = '<script '.$val[0].'</script>';
array_push($delayed_scripts, $delayed_script);
}
/* Remove all scripts from HTML */
$widget_shortcode = preg_replace('#<script(.*?)</script>#is', '', $widget_shortcode);
/* Echo filtered HTML */
echo $widget_shortcode;
</body>
終了タグの直前:
foreach ($delayed_scripts as $script) {
echo $delayed_script;
}