Contact Form 7 のセレクトボックスやチェックボックスの値を動的に変える

LastModified
Category WordPress

概要

wpcf7_form_tag_data_option を使って動的に値を変える

参考

動的に選択項目を入れる

フォームのショートコード内に data:xxxx というパラメーターを追加する

セレクトボックスの場合


[select animal data:add_animal_data]

チェックボックスの場合


[checkbox animal data:add_animal_data]

ラジオボタンの場合


[radio animal data:add_animal_data]

functions.php


function wpcf7_add_animal_data($data, $options, $args)
{

    foreach ((array) $options as $option) {
        if ($option == "add_animal_data") {//data:xxxx の部分
            $animals = array(
				"ねこ",
				"いぬ",
				"カバ"
			);

            $data = array_merge((array) $data, $animals);
        }
    }

    return $data;
}

add_filter('wpcf7_form_tag_data_option', 'wpcf7_add_animal_data', 10, 3);

投稿やカスタムポストと連動する

選択項目にカスタムポストのタイトルを入れる

functions.php


function wpcf7_add_custompost_data($data, $options, $args)
{

    foreach ((array) $options as $option) {
        if ($option == "add_animal_data") {//data:xxxx の部分

            $_args = array(
                'post_type' => "animals",
                'nopaging' => 1,
                'post_status' =>'publish',
            );

            $the_query = new WP_Query($_args);

            $_data = array();
            if ($the_query->have_posts()) {
                while ($the_query->have_posts()) {
                    $the_query->the_post();
                    $_data[] = get_the_title();
                }
				wp_reset_postdata();
            }
            $data = array_merge((array) $data, $_data);
        }
    }

    return $data;
}

add_filter('wpcf7_form_tag_data_option', 'wpcf7_add_custompost_data', 10, 3);