Contact Form 7 のフックで投稿情報を取得するには
Contact Form 7 のフックでは $post の情報が取得できなかったのですが、
以下の方法で投稿情報を取得することができました。
ショートコードの属性として投稿IDを設定
以下のような感じでテンプレートファイルにショートコードを追加します。
[php]
$post_id = $post->ID;
echo do_shortcode(‘[contact-form-7 id=”cf7のID” title=”タイトル” 属性名=”‘ . $post_id . ‘”]’);
[/php]
「属性名」の部分は任意の名前で大丈夫だと思います。
フォームにフィールドを追加
Contact Form 7 の管理画面から、
フォームに以下のようなフィールドを追加します。
[php]
[hidden 属性名 default:shortcode_attr]
[/php]
※隠しフィールド(hidden)である必要はありません。
ショートコードに追加した属性を利用可能にする
そのままだと、任意の属性は利用できないようなので、
利用できるようにする必要があります。
[php]
function my_shortcode_atts_wpcf7_filter( $out, $pairs, $atts ) {
if ( isset( $atts[‘追加した属性名’] ) ) {
$out[‘追加した属性名’] = $atts[‘追加した属性名’];
}
return $out;
}
add_filter( ‘shortcode_atts_wpcf7’, ‘my_shortcode_atts_wpcf7_filter’, 10, 3 );
[/php]
投稿IDを取得
あとは、フック内に以下のコードを書くことで、投稿IDを取得できます。
投稿IDが取得できれば、色々な投稿情報を取得できるとようになると思います。
[php]
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$data = $submission->get_posted_data();
}
$post_id = $data[‘追加した属性名’];
[/php]