[wp]reCAPTCHAを任意のページのみで読み込む

割りと邪魔。

仕様の理解

要するにGoogleが提供してるセキュリティの云々であって、contact form 7とかで追加設定できる。

それこそCF7で仕込むとどうなるかと言えば、サイト上の全てでreCAPTCHAが読み込まれる。フォームの有無に関係なく設置されるんで無駄な読み込みになる。右下にアイコンが表示されるし邪魔くさい。

ページの読み込み速度をチェックすると取り上げられる要素の一つ。

PageSpeed Insights

なので、不要なページでは非表示にしたいという取り組み。

functions.phpで制御

ここを参考に。

reCAPTCHAをContact Form 7(お問い合わせフォーム)のみに読み込み制限をかける - 原神攻略サイト
#20250;#31038;#12398;Web#12469;#12452;#12488;#12420;Blog#12434;#36939;#21942;#12375;#12390;#12356

うちではよく親要素を指定するので、こういうのを仕込んである。

//親ページ条件分岐用
function is_parent_slug() {
    global $post;
    if ($post->post_parent) {
        $post_data = get_post($post->post_parent);
        return $post_data->post_name;
    }
}

で、これを踏まえて複数条件だとこんな感じ。

// reCaptcha読み込み制限
function recaptcha_limitation() {
    if( !(is_page( 'form' )) && !(is_parent_slug() === 'form') && !(is_parent_slug() === 'lp')){
     wp_deregister_script( 'google-recaptcha' );
    }
   }
   add_action( 'wp_enqueue_scripts', 'recaptcha_limitation', 50 );

「これらのページ以外だったら非表示」の内容。

注意と言うか

フォームのプラグインはだいたいどのページにでも挿入できるようになるわけで、だから新着情報内にフォームを突っ込んだりする。つまり、LPとかだと階層で管理できるんだけどそうもいかない場合がある。そういうときはめんどくさいので諦めるか、随時記載するかになる。だるい。めんどい。

もうちょっと凝った組み方をしたほうがいいかもしんない。

コメント

タイトルとURLをコピーしました