Недавно появилась необходимость, сделать так, что бы в выпадающем списке формы 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
Ох уж эти Врачи =)
Тоже сейчас верстаю сайт для зубной клиники.
Много чего через произвольные поля и произвольные типы записей реализовано.
Благодарю за понятный, короткий и актуальный код!