見出し画像

【WordPress】Contact Form 7でページタイトルとURLを取得する

蛇足程度に書きます。
WordPressのメールフォームプラグイン、Contact Form 7 で wpcf7_add_form_tag() を使用してページタイトルとURLを取得するための方法です。
拡張プラグインを使用したくない方はこちらを試してみてください。

なお、公式のマニュアルはこちらをご参照ください。


1. functions.php

functions.php でいつもどおり、get_the_title() と get_permalink() を使用して type="hidden" で吐き出すためのコードを作ります。

add_action( 'wpcf7_init', 'add_custom_form_tags' );

function add_custom_form_tags() {
  wpcf7_add_form_tag( 'page_title', 'get_page_title_form_tag_handler' );
  wpcf7_add_form_tag( 'page_url', 'get_page_url_form_tag_handler' );
}

function get_page_title_form_tag_handler( $tag ) {
  return '<input type="hidden" name="page_title" value="' . get_the_title() . '" />';
}

function get_page_url_form_tag_handler( $tag ) {
  return '<input type="hidden" name="page_url" value="' . get_permalink() . '" />';
}

wpcf7_add_form_tag() の呼び出しは wpcf7_init フックのタイミングで実行する必要があるということですので、まず、フォームタグを作成するための追加関数を作ります。
その追加関数 add_custom_form_tags() のなかで wpcf7_add_form_tag() にフォームの名前と、実行する関数をそれぞれ指定します。
page_title と page_url がフォームの名前で、実行関数は get_page_title_form_tag_handler と get_page_url_form_tag_handler です。
そしてそれぞれに<input type="hidden">でname属性にフォーム名を指定し、value属性に get_the_title() と get_permalink() を指定します。

2. ショートコード

既にinputタグを含んだコードが生成されるようになっているので、以下のショートコードをそのままメールフォーム作成画面で入力します。
メール出力も同じように記述します。

[page_title]
[page_url]

これでメール、及びデータベースプラグインでタイトルとURLを取得できるようになります。

一応、動作確認済みです。

この記事が気に入ったらサポートをしてみませんか?