【WordPress】問い合わせページに遷移元のページタイトルを表示する

WordPressで、記事の中にある問い合わせボタンを押したら、
問い合わせフォームのページに遷移元のページタイトルを表示したい

というのをtwitterで目にしました。

やり方はいろいろあると思いますが、

(1) 記事ページの問い合わせボタンにgetでクエリを仕込む

(2) 問い合わせフォームのページでクエリを取得して表示する

というやり方で実現してみます。

WordPress記事のページに問い合わせボタンをつける

問い合わせボタンのaタグに記事タイトルをあらかじめ仕込んでおきます。

<a href=”/contact/?title=<?php echo get_the_title();?>”>問い合わせページへ</a>

こんな感じで、&title〜というようなクエリをaタグに入れておきます。

この問い合わせボタンを叩くと、問い合わせページはこんなURLになります。

こうなっていればOK。

次は問い合わせページ側で表示を調整します。

問い合わせページ用のphpファイルを用意する

ダッシュボードの入力画面にphpを入力しても動きませんので、phpファイルのほうで解決します。

使っているWordPressのテーマのフォルダを見てみましょう。

ほぼ間違いなく、page.phpというファイルがあるはずです。

これは固定ページの表示を行うためのphpです。

今回は問い合わせページだけ表示を変えたいわけなので、それ専用のphpを用意してみます。

page-contact.phpを作る

まず、page.phpを複製します。

そしてその名前をpage-contact.phpで保存しましょう。

※問い合わせページのslugがcontactの場合。
もしslugがtoiawaseの場合は、page-toiawase.phpにする。

page-contact.php内にタイトルを表示する

page.phpを複製して作ったpage-contact.phpを開くと、どこかにthe_contectという関数があるはずです。

これがWordPressのダッシュボードで入力する本文を表示するものになりますので、それより先にタイトルを表示したければその上に、後に表示したければその下に記述していきましょう。

WordPressでは$_GETはそのまま表示できない

さて、URLに?title=タイトル とクエリが入っているので、$_GET[‘title’]で表示できそうに思います。

でも、できません!!

ではどうすればいいかというと、wp_unslash関数を使います。

<?php echo wp_unslash( $_GET[‘title’] ); ?>

このようにすることで?title=タイトルの部分を取得して表示できます。

 

フォームの値に含めたいという場合は、使っているプラグインによって違いそうなので割愛。

contat form 7 の場合は

こちらの記事が参考になりそうです。