02 2月 2020
WordPress カスタム投稿のタイトルを取得してContactForm7ラジオボタンの選択肢にする

WordPressでフォームを作るとき、Contact Form 7 を使っていますが、投稿記事(出来ればカスタム投稿)と連携出来ないかなーと思ってメモ。
例えば、イベント情報をカスタム投稿(Custom Post Type UI)で登録して、イベント応募フォームへ遷移するとき、募集中のイベントから選択できるようにする。とか。
企業の採用情報で、現在募集中の職種を投稿して、応募フォームには募集中の職種のみ表示する。とか。
こんな感じ。

遷移元のタイトルを渡して、専用フォームっぽくする……って手もあるのですが
【WordPress】Contact Form 7 に値を渡すメモ
一応、一覧表示しておいて、改めて選択させるという「手間」を設けたい。
実装
function.phpに追加。
Contact Form 7用のショートコード wpcf7_add_shortcode() を利用します。
function create_entryform_genre(){
$getPosts = get_posts('post_type=カスタム投稿のスラッグ');
$getPostName = 'genre';//name属性
$output .= '<span class="wpcf7-form-control-wrap '. $getPostName. '"><span class="wpcf7-form-control wpcf7-radio">';
foreach($getPosts as $getPosGenre) {
$output .= '<span class="wpcf7-list-item"><label>';
$getPostTitle = get_the_title($getPosGenre->ID);
$output .= '<input type="radio" name="'. $getPostName. '" value="'. $getPostTitle. '"><span class="wpcf7-list-item-label">'. $getPostTitle. '</span>';
$output .= '</label></span>';
}
$output .= '<span class="wpcf7-list-item"><label><input type="radio" name="'. $getPostName. '" value="その他"><span class="wpcf7-list-item-label">その他</span></label></span>';
$output .= '</span></span>';//投稿記事のほかに「その他」も追加
return $output;
}
wpcf7_add_shortcode('entryform_genre', 'create_entryform_genre', true);
ショートコードを追加
コンタクトフォーム(Contact Form 7 )の編集画面でショートコードを追加
function.phpで追加したショートコードとname属性を記述します。
[entryform_genre genre]
ラジオボタンで吐き出されるコードをベタ書きしているので、あんまり汎用性はありませんが。