以下のページを参考にして作りました。
参考ページ
WordPressでお問い合わせフォームに商品名などリンク元の情報を投げる方法
https://www.vektor-inc.co.jp/post/wordpress-contact-form-send-para/
ボタンを表示するショートコードを登録する
functions.php に以下のコードを追加します。
/*-------------------------------------------*/
/* ショートコード [contact_btn] を登録
/*-------------------------------------------*/
add_shortcode( 'contact_btn', 'my_contact_btn' );
// [contact_btn] を返す関数
function my_contact_btn(){
// 問い合わせフォーム先のURL
$url = home_url() . '/contact/?pageTitle=「' . get_the_title() . '」について';
// 問い合わせボタンを返す
return '<div class="text-center"><a href="'.esc_url( $url ).'" class="btn btn-primary">このページについて問い合わせる</a></div>';
}
上記のコードにより、ショートコード contact_btn で以下のボタンが表示されるようになります。
URL パラメータの値をフォームの入力欄に表示する
さらに functions.php に以下のコードを追加して、URL パラメータを Contact Form のフックに登録してありますので、このページのタイトルが自動的にお問い合わせフォームの your-subject に表示されるようになっています。
/*-------------------------------------------*/
/* URLパラメータを Contact Form のフックに登録
/*-------------------------------------------*/
function my_form_tag_filter( $tag ) {
if ( ! is_array( $tag ) ) {
return $tag;
}
// pageTitle の値を受け取って Contact Form に投げる
// 複数のパラメーターを受け取る場合は if (){} 部分を複製してパラメーター名を変更すればOK
if ( isset( $_GET['pageTitle'] ) ) {
$name = $tag['name'];
if ( $name == 'your-subject' ) {
$tag['values'] = (array) $_GET['pageTitle'];
}
}
return $tag;
}
add_filter( 'wpcf7_form_tag', 'my_form_tag_filter', 11 );
ボタンをクリックすると、リンク先の URL パラメータ pageTitle としてこのページのページタイトルが指定されていることを確認できます。