はじめに
文中において、Contact Form 7 をCF7と略して記述しています。
チョイネタです。
WordPressでサイト構築した人であれば、一度は目にしたことがあると思われる、メジャープラグインのContact Form 7。このプラグインを使うことで問い合わせフォームが簡単に作成できます。
しかし、このプラグインをインストールすると、すべてのページでCF7が使うCSSとJSがロードされてしまいます。あまり気にされない人はそれでもいいよというかもしれませんが、どうも納得がいかず調べてみました。
公式サイトでは
公式サイトのFAQでは、必要な場合だけ JavaScript とスタイルシートをロードさせるにはという記述があります。下のフィルターです。
add_filter('wpcf7_load_css', '__return_false');
add_filter('wpcf7_load_js', '__return_false');
reCAPTCHAをセットアップすると
公式サイトの方法をfunction.php
に記述したところ、見事にロードされなくなります。しかし、CF7のreCAPTCHAをセットアップにした時のJSまでアンロードできません。
ロードさせないようにするには
プラグインのコードをざっとみてもfilterが見当たりませんでした。そこで、deregister
してしまおうってことでコードを用意しました。フォームを設置するページが複数あってもいいように配列で定義できるようにしました。
function cf7_deregister()
{
// フォームを設置するURLの最後の文字列を定義しておく
$_formURL = [ 'form', 'frontpage' ];
if (is_front_page()) {
//フロントページの時はfrontpageとする
$_accessURL = 'frontpage';
} else {
$_accessURL = basename(get_permalink());
}
if (!( in_array($_accessURL, $_formURL))) {
wp_deregister_style('contact-form-7');
wp_deregister_script('jquery');
// recaptchaをONにした場合
wp_deregister_script('google-recaptcha');
}
};
add_action('wp_enqueue_scripts', 'cf7_deregister', 20);
環境によっては条件判断を変更しないといけないかもしれません。上手くいかない時は、get_the_ID()
でIDを取得しましょう。ただし、環境依存になるのでおすすめしません。