私はプラグインにCSSスタイルシートとJavaScript JSファイルのロードをそれらが必要とされるそれらのページだけに制限させたいです。
私の質問の例は、私のサイトの1ページにフォームを作成するのに使用したプラグイン Contact Form 7 です( " contact me "ページ)。ただし、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>
これは私がこのプラグインが私のサイトのロード時間を損なっていると疑わせます、サイトの1つのページだけで私に興味を起こさせる拡張のために。
したがって、私の質問は、「Contact Me」ページを除くすべてのページからこれらの余分な行を削除する方法ですが、プラグインを無効にすることはできません。
スタイルとスクリプトは、常に関数wp_enqueue_script()
およびwp_enqueue_style()
によって設定されます。これらは、機能するために特定のアクションフックに関連付けられている必要があります。 Contact Form 7を覗いてみると、wpcf7_enqueue_scripts
とwpcf7_enqueue_styles
のアクションタグを使用してwp_print_scripts
とwp_print_styles
フックに追加しているようです。
だから、あなたがする必要があるのは、すべてのページからスクリプトとスタイルのフックを外すことですbut連絡先ページ。 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
を返します(名前が "contact me"であると仮定)...ページスラッグとページIDも使用できますフィルター用。他のすべてのページでは、if()
条件は、wp_head
アクションとwp_print_scripts
アクションの直前に起動するwp_print_styles
アクションにスクリプト/スタイル削除関数を追加します。
これにより、ページから余分なコードが削除され、プラグインを無効にしたり、コアファイルを編集したりする必要がなくなります。上記の関数とコードは、Contact Form 7を将来削除してもテーマが壊れることはありません。したがって、将来のアップグレードの互換性について心配する必要はありません。