選択したページにCSSとJSのみをロードするようにプラグインを制限しますか?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/695

質問

プラグインが、必要なページのみに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_scriptswpcf7_enqueue_styles それらを追加します wp_print_scriptswp_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_scriptswp_print_styles 行動。

これにより、ページから余分なコードが削除され、プラグインを非アクティブ化したり、コアファイルを編集する必要がありません。上記の機能とコードは、将来的に連絡先フォーム7を削除した場合、テーマを壊すことはありません。

ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top