Добавление произвольного динамического select в Contact Form7

Комментариев: 1

Недавно появилась необходимость, сделать так, что бы в выпадающем списке формы Contact Form 7 выводился список записей произвольного типа. Если конкретнее, то на сайте есть произвольные типы записей "Врачи", а в форме, необходимо было, что бы был выпадающий список с этими врачами.

Давайте сделаем это на примере стандартных записей, что бы вам было проще изменить это под свои задачи:

<?php 
// Custom contact form 7 retreat select
add_action( 'wpcf7_init', 'custom_retreat_select' );
function custom_retreat_select() {
    wpcf7_add_form_tag( 'retreat_select', 'custom_retreat_handler', array( 'name-attr' => true ) );
}
function custom_retreat_handler( $tag ) {
    $atts = array();
    $atts['name'] = $tag->name;
    $atts['class'] = $tag->get_class_option();
    $atts['id'] = $tag->get_id_option();
    $atts = wpcf7_format_atts( $atts );
    $html = '<select ' . $atts . '>';
    $args = array(
      'post_type' => 'retreats',
      'posts_per_page' => -1,
    );
    $retreats = get_posts( $args );
    foreach ( $retreats as $retreat ):
        $retreat_id = $retreat->ID;
        $slug = $retreat->post_name;
        $title = get_the_title($retreat_id);
        $html .= '<option value="' . $slug . '">' . $title . '</option>';
    endforeach;
    $html .= '</select>';
    return $html;
}

Источник кода: https://gist.github.com/morgyface/56474f0a37abb7d622880daf6eff6e40

Уведомлять о новых комментариях
Уведомлять
guest
1 Комментарий
Inline Feedbacks
View all comments
Роман
Роман
3 лет назад

Ох уж эти Врачи =)
Тоже сейчас верстаю сайт для зубной клиники.
Много чего через произвольные поля и произвольные типы записей реализовано.

Благодарю за понятный, короткий и актуальный код!