【備忘録】メールフォームにリファラー(遷移元URL)情報を添付する方法!

【備忘録】メールフォームにリファラー(遷移元URL)情報を添付する方法!

ブログのコメント欄は、キャッシュプラグインとの相性が悪く、結局、閉じることにしました。

しかし、それだけでは寂しいので、メールフォーム(Contact Form 7)を活用して、どのページからメールが送られたのかを把握できるようにしてみました。

この記事では、メールフォームにリファラー(遷移元URL)情報を添付する方法を備忘録としてまとめています。


コメント欄を閉じた理由

WordPressのコメント欄は、キャッシュプラグイン(LiteSpeed Cacheなど)と相性が悪く、正しく動作しないことがあります。

そのため、コメント欄は閉じることにしました。

CocoonにLiteSpeed Cacheを入れてみた
Luxeritasテーマ時代にはうまく動作しなかったLiteSpeed CacheをCocoonに入れてみました。このページではLiteSpeed Cache導入時の注意点などを解説しています。

しかしそれでは寂しいので、メールフォーム(Contact Form 7)をフル活用し、コメント欄のように活用することを考えました。

 

メールフォームでリファラー情報を取得するメリット

メールフォーム(Contact Form 7)では通常、送信元情報は添付されません。

例えば、ユーザーが「A」というページを見ていて、「A」のフッターにあるメールフォームをクリックし、送信した場合、リファラー情報があれば「Aページからの送信」と分かります。

これにより、コメント欄の代替として、以下のような文章を記事下に一筆入れ、ユーザーからメッセージが届いても対応がしやすくなります。

コメント欄の代替としてメールフォームを活用

メールフォームを活用する理由

メールフォームでのやり取りには、コメント欄にはないいくつかの利点があります。

  • 管理の負担軽減
    コメント欄は公開された場でのやり取りになるため、公開を前提とした返信が必要で気を使います。一方、メールフォームなら個別対応が可能で、管理の負担を軽減できます。
  • 丁寧な対応が可能
    メールは個別に返信できるため、読者との信頼関係を築きやすく、双方向のコミュニケーションが図りやすくなります。
  • 投稿のハードルが適切に保てる
    メールは気軽に送れる一方で、「ちょっとした悪口」程度では送る心理的ハードルが働き、建設的な意見が集まりやすくなります(悪質なものは受信拒否も可能です)。
  • データとして残りやすい
    メールで届いた意見は管理しやすく、どの記事にフィードバックが集まるかを見ることで、サイトの改善のヒントになります。
  • 信頼性の向上
    記事内に”フィードバックを送れる”手段があることは、信頼性と透明性の証 になります。

    手順:JavaScriptでリファラーを取得

    メールフォーム(Contact Form 7)にリファラー(遷移元URL)情報を添付する方法はとても簡単です。

    まず、WordPressテーマの javascript.jsに以下のコードを貼り付けます。

    メールフォーム(Contact Form 7)にリファラー(遷移元URL)情報を添付するには、まず、 javascript.jsに以下のコードを貼り付けます。

    *Cocoonの場合Cocoon Child の javascript.jsになります

    /*
    *------------------------------------------------------
    * Contact Form 7 (CF7) 用: 遷移元URL自動取得スクリプト
    *------------------------------------------------------
    * このスクリプトは、ユーザーがフォームを送信する直前に閲覧していたページの
    * URL(リファラー)を取得し、CF7フォーム内の隠しフィールド
    * 'referer-url' に自動的に値を入力します。
    */
    window.onload = function() {
    // ページ読み込み時に実行
    var referrerUrl = document.referrer;
    // 'referer-url' という名前の隠しフィールドを探す
    var hiddenField = document.querySelector('input[name="referer-url"]');
    
    // 隠しフィールドと遷移元URLが存在すれば値をセットする
    if (hiddenField && referrerUrl) {
    hiddenField.value = referrerUrl;
    }
    };

    このスクリプトにより、ユーザーがフォーム送信する直前に閲覧したページのURLを取得し、CF7の隠しフィールドに自動でセットします。

    Contact Form 7の設定

    Contact Form 7のフォームタブとメールタブに以下を追記します。

    [hidden referer-url]

    Contact Form 7のフォームタブイメージ

    送信元個別URL:[referer-url]

    Contact Form 7のメールタブイメージ

    たったこれだけでメールフォーム(Contact Form 7)にリファラー(遷移元URL)情報が添付されるようになります。

    メールフォーム(Contact Form 7)にリファラー(遷移元URL)情報が添付されるようになりました。

    すごい!!

    注意事項:metaタグの設定

    これには、HTMLのメタタグに以下のコードを記述されているのが前提になります(入ってない場合はHTMLのheadタグ内に入れましょう)。

    <meta name="referrer" content="no-referrer-when-downgrade"/>

    意味は「リファラー(遷移元URL)情報を送ってもいいよ!」と指定するコードになります。

    Cocoonの場合は、設定の「SEO」タブ内に「no-referrer-when-downgrade」の項目があるのでチェックを入れるだけで完了です!!

    Cocoonのリファラー設定

    *同一ドメイン内であれば”strict-origin-when-cross-origin”(ブラウザデフォルト)などでもできると思います。

    まとめ

    コメント欄は閉じましたが、メールフォームでリファラー情報を取得することで、どのページから送信されたかを把握できるため、コメント欄の代替として活用可能です。

    手順も簡単で、JavaScriptとCF7の設定だけで完了します。

    さらに、メールフォームには Google reCAPTCHA などのスパム対策を導入できるので、安心して運用できます。

    ※Googleフォームでもリファラー情報を取得できますが、スパムのリスクがやや高いため、今回はメールフォームを採用しました。

    個人的には、公開でやり取りするよりも、クローズドなメールでのやり取りのほうが性に合っているので、これは我ながら良いアイデアだと思いました。

    今まで放置していたCF7を再調整し、サンクスページ作成と、自動返信メール設定も行いました。

    メールのサンクスページイメージ

    日々勉強です!!

     

    ※これは管理人がAIの力を借りながら行ったものですので、質問されても返答できません。実装は自己責任でお願いします。

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