選択したページにCSSとJSのみをロードするようにプラグインを制限しますか?
-
16-10-2019 - |
質問
プラグインが、必要なページのみにCSSスタイルシートとJavaScript JSファイルのロードを制限させたいと思います。
私の質問の例はプラグインです フォーム7にお問い合わせください 私は自分のサイトの1つのページにフォームを作成するために使用しました(」私に連絡して「ページ)。ただし、Webサイトのすべてのページ/投稿に次の行を追加します。
<link rel='stylesheet' id='contact-form-7-css' href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' />
<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script>
これにより、このプラグインが私のサイトの読み込み時間を損なっているのではないかと疑っています。
したがって、私の質問は、「連絡先」ページを除くすべてのページからこれらの追加の行を削除するにはどうすればよいですか?
解決
スタイルとスクリプトは常に関数によって設定されます wp_enqueue_script()
と wp_enqueue_style()
, 、機能するには、特定のアクションフックに結び付けられる必要があります。私は連絡先フォーム7を覗いてみましたが、のアクションタグを使用しているように見えます wpcf7_enqueue_scripts
と wpcf7_enqueue_styles
それらを追加します wp_print_scripts
と wp_print_styles
フック。
だから、あなたがする必要があるのは、すべてのページからスクリプトとスタイルをフックすることです しかし 連絡先ページ。 wp_head
アクションはスクリプトとスタイルのアクションの前に発射されるため、テーマのfunctions.phpファイルにこのようなものを追加する必要があります。
function remove_wpcf7_extras() {
remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}
if( ! is_page('contact me') ) {
add_action('wp_head', 'remove_wpcf7_extras');
}
is_page() 機能が返されます true
連絡先ページに表示されている場合(名前が「連絡先」と仮定)...フィルターにページスラグとページIDを使用することもできます。他のすべてのページで、 if()
条件付きでは、スクリプト/スタイルの削除関数をに追加します wp_head
アクション wp_print_scripts
と wp_print_styles
行動。
これにより、ページから余分なコードが削除され、プラグインを非アクティブ化したり、コアファイルを編集する必要がありません。上記の機能とコードは、将来的に連絡先フォーム7を削除した場合、テーマを壊すことはありません。