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]
ラジオボタンで吐き出されるコードをベタ書きしているので、あんまり汎用性はありませんが。