サンクスページへのURL指定による直接表示を防ぐには、WordPressのフィルターフックを活用する方法があります。本ブログでは、template_redirectフィルターを使って、サンクスページに対して直接表示を防ぐ制御方法を解説します。
この解説により、アクセス解析の正確性を実現するための適切な対応方法を学ぶことができます。
1. サンクスページの基礎知識
(1) サンクスページとは
サンクスページとは、お問い合わせフォームの操作を完了した際に表示される完了ページのことを指します。このページでは「お問い合わせを受け付けました」などのメッセージが表示されます。
(2) サンクスページへの直接表示を防ぐ理由
サンクスページのURLを直接入力して不用意に表示された場合、以下のような問題が発生する可能性があります。
- 操作の混乱と誤解の招く恐れ
サンクスページをブックマークされた場合など、フォームを送信していないにもかかわらず「お問い合わせを受け付けました」などのメッセージが常に表示されてしまいます。このような状況は、サイト利用者に混乱や誤解を与える可能性があります。 - コンバージョン数値のずれ
Google アナリティクスにおいて、不用意に表示されたサンクスページがコンバージョンページとしてカウントされてしまうと、「実際のお問い合わせ数」と「アナリティクスの数値」に誤差が生じてしまいます。 - SEOへの悪影響
検索エンジンのクローラーがサンクスページを読み込んでしまうと、本来の目的以外の低品質なページが検索結果に表示される可能性があります。これはSEO対策を阻害する要因となります。
2. サンクスページの追加方法
(1) プラグイン Contact Form 7 利用時
以下のリダイレクトコードの’https://example.jp/contact-submitted/‘を自サイトのサンクスページのURLに変更し、『Contact Form 7』のフォーム編集画面に貼り付けます。
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = 'https://example.jp/contact-submitted/';
}, false );
</script>
(2) プラグイン Snow Monkey Forms 利用時
Snow Monkey Formsでは、フォーム送信後に遷移するサンクスページを別ページに設定することができます。下記のリンク先ページでは、実際に張り付けられるPHPコードの例が紹介されていますので、参考にしてみてください。
3. サンクスページへの直接表示を防ぐ方法
(1) template_redirect フィルターを用いた防止方法
PHPのフィルターフック template_redirect を使うことで、サンクスページへの直接表示を防ぐことができます。表示しようとしているページの遷移元がお問い合わせフォームページかどうかを確認し、サンクスページに直接アクセスされた場合は、お問い合わせフォームページにリダイレクトさせます。
下記は、固定ページの設定においてお問い合わせフォームページのスラッグが ‘contact’、サンクスページのスラッグが ‘contact-submitted’ の場合のコーディング例です。
add_filter( 'template_redirect', function() {
if ( is_page() ) {
// 現在のページのスラッグを取得
global $post;
if (is_null($post)) return;
$current_slug = $post->post_name;
$submitted_slugs = array('contact-submitted');
if (in_array($current_slug, $submitted_slugs)) {
if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], home_url('/contact')) === false) {
// リダイレクト
wp_redirect(home_url('/contact'));
exit;
}
}
}
}, 10, 0 );
- サンクスページを追加した固定ページ以外に影響を与えないようにするため、最初に is_page() で、固定ページかを確認します。
- 他のページに影響を与えないようにするため、投稿オブジェクト($post)から現在のページのスラッグを取得し、サンクスページ(スラッグ ‘contact-submitted’)の場合のみ、リダイレクト処理を行います。
- $_SERVER[‘HTTP_REFERER’]を使用して、アクセス元がお問い合わせフォームページ(スラッグ ‘contact’)以外の場合、お問い合わせフォームページにリダイレクトさせます。
(2) コード変更後のテストと確認手順
- サンクスページのURLを直接入力し、お問い合わせフォームページに正しくリダイレクトされることを確認する
- お問い合わせフォームから送信した際に、正常にサンクスページへ遷移できることを確認する
- お問い合わせフォームから遷移した状態で、ブラウザのリロード機能(F5キー)を使ってサンクスページを再表示しても、お問い合わせフォームページにリダイレクトされずにサンクスページが表示され続けることを確認する
この手順で、以下の2点を確認することができます。
- サンクスページへの直接表示がブロックされ、適切にリダイレクトされていること
- お問い合わせフォームから正常に遷移した場合は、サンクスページが問題なく表示され続けること
このようにテストをしっかりと行うことで、コード追加がサイトの動作に望ましくない影響を与えていないことを確認できます。