Contact Form 7の入力欄に文字を自動で入れる方法

Contact Form 7の入力欄に文字を自動で入れる方法

WordPressのプラグイン「Contact Form 7」で作成した入力欄に、自動で文字を入れる方法を備忘録としてまとめておきたいと思います。

以下の方法で、ページのタイトルをリンク先のテキストフォームに自動挿入します。

リンクの作成

まず、リンク元のページにお問い合わせページへのリンクを作成します。お問い合わせページのフォームに、このリンク元ページのページタイトルが自動挿入されます。

<a href="/contact?postID=<?php the_ID(); ?>">お問い合わせ</a>

contactはお問い合わせページのパーマリンクです。こちらは作成したページに合わせて変更してください。

postIDの後ろは、お問い合わせページのページIDを取得しています。

フォームの作成

次に「Contact Form 7」でお問い合わせページにフォームを作成します。ページのタイトルが入るフォームを下記のように設定します。

[text event-title]

「Contact Form 7」の詳しい使い方はこちらの記事をご覧ください。

functions.phpの修正

functions.phpに以下を追加します。

<?php
function my_form_tag_filter($tag){
    if ( ! is_array( $tag ) )
        return $tag;

    if ( isset( $_GET['postID'] ) ) {
        $name = $tag['name'];
        if ( $name == 'event-title' ) {
            $postID = $_GET['postID'];
            $mailsubject = get_post( $postID, ARRAY_A );
            $tag['values'] = (array)$mailsubject['post_title'];
        }
    }
    return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);
?>

postIDは、リンクの作成で設定したページIDです。フォームのnameが「event-title」と一致した場合、ページタイトルを表示します。

functions.phpを設定すると、フォームに自動的にページのタイトルを入れることができるようになりました。

例えば開催予定のイベントが複数あるときに参加申し込みフォームに希望のイベント名を自動的に入れるなど、様々な場面で使用できそうですね。

参考

wordpress Contact Form 7に記事タイトルを表示する | WEBデザイナーのしおり