Skip to content

Instantly share code, notes, and snippets.

@morgyface
Last active August 13, 2024 16:44
Show Gist options
  • Save morgyface/56474f0a37abb7d622880daf6eff6e40 to your computer and use it in GitHub Desktop.
Save morgyface/56474f0a37abb7d622880daf6eff6e40 to your computer and use it in GitHub Desktop.
WordPress | Contact Form 7 | Custom select from post list
<?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;
}
@Halleluyahsalako
Copy link

Halleluyahsalako commented May 8, 2021

@morgyface

Hey there, it sounds to me like you need to be using JavaScript for this. Have a look at something like this: https://stackoverflow.com/questions/30232146/dynamically-populating-drop-down-list-from-selection-of-another-drop-down-value
👍🏼

Thank you so much, I got a fix that works perfectly here: https://bdwm.be/how-to-create-dynamically-populated-cascading-dropdown-lists-for-contact-form-7/

I will however suggest, for future reference to anyone, to check the comments, there were some mistakes in the code that were corrected in the comment session.

Again, thanks for your help and the timely response.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment