はじめに
記事の個別ページで使用するお問い合わせフォームに記事のタイトルを自動で反映させるという内容が実務経験であったことを先日更新しました。
実務経験であった案件の指示書の中に、「記事のタイトルを自動的にフォームに反映させる」という指示がありました。今回はContact Form 7プラグインを使用してお問い合わせフォームを作成し、記事のタイトルを自動的にフォームに反映させる方法
上記記事では<input>内にreadonlyを指定する方法でしたが、<input>内ではなくそのまま記事タイトルを反映させる方法はないのか?
と思ったのでできるか試した結果、できたため紹介いたします。
実装環境
WordPress バージョン6.3 カスタムテーマ
使用プラグイン Contactform7 バージョン 5.8
自動的に記事のタイトルをフォームに設定する方法
1.Contact Form 7プラグインのインストールと有効化
ダッシュボードから「プラグイン」を選択し、「新規追加」をクリック。
「Contact Form 7」を検索し、インストールと有効化を行います。
2.フォームの作成
Contact Form 7メニューから「新規追加」を選択。
必要なフィールドを追加し、フォームの基本設定を行います。
3.記事のタイトルフィールドを追加
フォームエディタ内で、記事のタイトルを受け取るためのフィールドを追加します。
[_post_title]タグは使用できるか
公式によると[_post_title]というタグがあるが、フォーム内では使用できず自動送信メール内でしか使用できない。
ページ下部の実装確認で[_post_title]がそのまま表示されていることが確認できます。
Contact Form7 「特別なメールタグ」
ショートコードは使用できるか
functions.phpに記事のタイトルを表示させるショートコードを追加します。
function get_post_title_shortcode() {
$post_title = get_the_title();
return $post_title;
}
add_shortcode('post_title_shortcode', 'get_post_title_shortcode');
ショートコードは記事内では使用できますが、フォーム内では使用ができないです。
下記はショートコードを使用してタイトルを表示させていますが、ページ下部の実装確認では[post_title_shortcode]がそのまま表示されていることが確認できます。
↓↓
WordPressのContact Form 7のフォームに自動で記事のタイトルを設定する方法24.フォーム内の<input>タグ内ではなく、そのまま記事タイトルを表示させる方法
functions.phpに下記を追加すると、Contact Form7のフォーム内でもショートコードが使用可能になります。
[post_title]とフォーム内に挿入すれば記事のタイトルが表示されるようになります。function auto_post_title02() {
wpcf7_add_form_tag( 'post_title', 'get_page_title_form_tag_handler' );
}
function get_page_title_form_tag_handler( $tag ) {
return '<input type="hidden" name="post_title" value="' . get_the_title() . '" />' . get_the_title();
}
add_action( 'wpcf7_init', 'auto_post_title02' );
5.実装できているか確認
フォームを保存し、記事のタイトルがフォームに自動的に表示されるか確認してください。
下記のように自動で<input>タグ内ではなくそのまま記事のタイトルがフォームに設定されるはずです。
まとめ
上記で紹介した方法を使用することで、Contact Form 7プラグインを使ったフォームに、<input>タグ内ではなくそのまま記事のタイトルが表示されるようになります。自動返信メールの送受信確認もしています。