これから Nishiki Pro
テーマを使うなら1度は確認しよう!

Nishiki テーマおすすめ設定 テーマおすすめ設定を見る
  1. ホーム
  2. マニュアル
  3. WordPress(ワードプレス)の使い方
  4. お問い合わせフォームを設置する「Contact Form 7」プラグインで、特定のページ以外で Google reCAPTCHA 含め、関連する CSS/JS ファイルを「完全に」読み込まなくする方法

このページでは、ワードプレスにお問い合わせフォームが設置できる Contact Form 7 プラグインで、特定のページ以外、スパムボットによる不正なフォーム送信を防ぐために用いられる Google reCAPTCHA 含め、Contact Form 7 プラグインが使用する CSS/JS を一切読み込まないようにする方法を解説しています。

どのページでも表示される Google reCAPTCHA のバッジ

下の動画のように、ウェブサイトの右下あたりに Google reCAPTCHA のバッジが表示されているのをよく見かけます。

この Google reCAPTCHA、「お問い合わせフォームを設置していないページまで表示されるの、なんとかならない?」なんて思ったことはありませんか。

仮に思ったことがなかったとしても、私個人的にはウェブ制作などのお仕事でよく求められるカスタマイズで、せっかくなので以下のようにまとめました。

似たようなことをしたい場合は参考ください。

注意!

ここからの情報は、PHP でコードが書けたり、ワードプレスのカスタマイズ知識や技術をある程度持っている上級者向けの内容として公開しています。

カスタマイズ用のプラグインを作ったり、子テーマを作って functions.php 内にコードを追記するなどで実装してください。

このようなカスタマイズがスラスラできるようになると、ワードプレスを扱う技術力も向上し、自信にもつながります。

もし駆け出しや初心者の方でも「やってみようかなぁ・・・」と、やる気がある方は、ぜひ挑戦してみてください!

サンプルコード

いきなりですがサンプルコードです。

// 特定のページ以外 Contact Form 7 の reCAPTCHA と CSS/JSを読み込まない
if( ! function_exists( 'nishiki_pro_custom_contact_form_7' ) ){
    function nishiki_pro_custom_contact_form_7() {
        // reCAPTCHA や  Contact Form 7 を読み込むページのスラッグを入れる
        $exclude_page = array(
            'contact',
            'about',
        );

        // 特定のページ以外で読み込まないよう条件分岐する
        if ( ! is_page( $exclude_page ) ) {
            wp_deregister_style( 'contact-form-7' ); // CSS を読み込まない
            wp_deregister_script( 'contact-form-7' ); // JS を読み込まない
            wp_deregister_script( 'google-recaptcha' ); // Google reCAPTCHA を読み込まない
        }
        
    }
    
    // フックする
    add_action( 'wp_enqueue_scripts', 'nishiki_pro_custom_contact_form_7', 100 );
}

コードのポイント

「条件をつけて Contact Form 7 に関する読み込みをしない」というコードです。

たぶん難しく感じる箇所は wp_deregister_style と wp_deregister_script の 2 つの関数の使い方でしょうかね。この 2 つの関数にはそれぞれハンドル名を設定するのですが「Contact Form 7 では何のハンドル名を設定していいのかわからない」という方は多そうな印象です。

さらに wp_enqueue_scripts を使ってフックするんですが、フックを使うことに慣れてない方にとっては難易度的には高いかもしれませんね。コードの量は少ないけど、やってることはなかなか応用が必要、って感じです。

また、ネットの情報では Google reCAPTCHA のみオフにしているコードも見られましたが、Google reCAPTCHA を読み込まないページは、おそらく Contact Form 7 そのものを使用しないページだと思います。

パフォーマンスの観点から考えても、使用しない機能の CSS/JS を読み込む必要はないので、Contact Form 7 に関する CSS/JS を全て読み込まないようにしています。

あとは条件分岐の関数 is_page を使って、配列 $exclude_page で指定したスラッグ(上のコードでは contact と about)のページ以外は読み込まなくしています。

is_page に配列を指定すれば、複数のページにお問い合わせフォームが設置してあった場合でも対応できるので便利ですね。

ちなみにですが、この is_page の部分を別の条件に変更してもいいと思います。お好みで、という感じですね。

参考リンク

WordPress テーマ Nishiki Pro

「ウェブサイト運営に本当に必要とされる機能」をテーマ内にまとめて搭載したワードプレステーマです。

ブロックエディター機能を強化し、これまでのワードプレスでは難しかったコンテンツが簡単に作れます。

ブログ、ポートフォリオ、コーポレートサイト、ビジネスサイト、オンラインショップなど、様々な目的のウェブサイトに対応できるテーマです。

最新情報をチェック!

Nishiki / Nishiki Pro テーマに特化した情報を「にしきちゃん」がお伝えします😀

  • リリース情報
  • 新機能の紹介
  • 便利な使い方
  • 開発中の機能紹介
  • 導入事例
  • あるある日常ネタ

など