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 の場合は
こちらの記事が参考になりそうです。