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

wordpress
WordPressでフォームを作るとき、Contact Form 7 を使っていますが、投稿記事(出来ればカスタム投稿)と連携出来ないかなーと思ってメモ。

例えば、イベント情報をカスタム投稿(Custom Post Type UI)で登録して、イベント応募フォームへ遷移するとき、募集中のイベントから選択できるようにする。とか。
企業の採用情報で、現在募集中の職種を投稿して、応募フォームには募集中の職種のみ表示する。とか。

こんな感じ。
wp-cf7

遷移元のタイトルを渡して、専用フォームっぽくする……って手もあるのですが
【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]

ラジオボタンで吐き出されるコードをベタ書きしているので、あんまり汎用性はありませんが。

Pocket