WordPress.org

Ready to get started?Download WordPress

Forums

Contact Form 7
[resolved] Add drop down list of recent posts (9 posts)

  1. rwilki
    Member
    Posted 2 years ago #

    Great plugin. Easy to use and it's so flexible for many purposes.

    I'm trying to hook into a simple drop down list of my most recent posts within a specific category.

    Basically, I'd like the user to select a post from a drop down box and this to be integrated into the contact form. This code grabs my recent posts from this category and puts into a drop down item but I can't figure out if there's a way to integrate it into contact form 7.

    <select name="events">
                         <option value="" selected="selected">Select an Event...</option>
                            <?php while (have_posts()) : the_post(); ?>
                            	<?php if (urldecode($alert[0]) == the_title()){ ?>
    								<option value="<?php the_title();?>"><?php the_title();?></option>
    							<?php } else { ?>
    								<option value="<?php the_title();?>"><?php the_title();?></option>
    							<?php } ?>
    						<?php endwhile; ?>

    Is this possible or should I try another approach?

    Thanks,
    Bob

    http://wordpress.org/extend/plugins/contact-form-7/

  2. wzshop
    Member
    Posted 2 years ago #

    Would like to know this as well.. Is there any code to use to get a custom function like the above?

  3. wzshop
    Member
    Posted 2 years ago #

    Hi guys,

    This is the code that makes it all work. Maybe not the best script? but it does really work. Simple add this function in functions.php:

    wpcf7_add_shortcode('postdropdown', 'createbox');
    function createbox(){ 
    
    global $post;
    $args = array( 'category' => 5 );
    $myposts = get_posts( $args );
    $output = '<select name="lstdate" id="fleet" onchange="document.getElementById(\'fleet\').value=this.value;"><option></option>';
    foreach ( $myposts as $post ) : setup_postdata($post);
    	$title = get_the_title();
    	$output .= "<option> $title </option>";
    
    	endforeach;
    $output .= "</select>";
    return $output;	
    
    }

    With the shortcode in contactform 7 [postdropdown]. This will show all the posts titles in category 5.

    Cheers!

  4. wzshop
    Member
    Posted 2 years ago #

    To fully get it functioning, use this updated code:

    Updated code:

    wpcf7_add_shortcode('postdropdown', 'createbox', true);
    function createbox(){
    global $post;
    $args = array('numberposts' => 0, 'category' => 5 );
    $myposts = get_posts( $args );
    $output = "<select name='cursus' id='cursus' onchange='document.getElementById(\"cursus\").value=this.value;'><option></option>";
    foreach ( $myposts as $post ) : setup_postdata($post);
    	$title = get_the_title();
    	$output .= "<option value='$title'> $title </option>";
    
    	endforeach;
    $output .= "</select>";
    return $output;
    }

    With the shortcode [postdropdown cursus] in the contactform to show posts from category 5. Put shortcode [cursus] in the mailtemplate.

    cheers.

  5. iheartlolcats
    Member
    Posted 2 years ago #

    This is great! It doesn't work when set with required (*). How can this be enabled?

  6. passimal
    Member
    Posted 1 year ago #

    hello ,
    I want just to have the content of the post when I put the short code of contact form.

    Can you help me to do that .?
    Thanks a lot ...

  7. NItesh Kumar
    Member
    Posted 1 year ago #

    Guies please help me out

    how can i achieve this from php dynamic values like

    <input type="text" value="<?php the_title(); ?>" />

    please help me out

  8. Vincent_Khoo
    Member
    Posted 1 year ago #

    Thanks for the code

    Just want to share that I have modified the code so that it could be used within the blog pages without affecting the main loop

    I also added in parameters like name and max width

    wpcf7_add_shortcode('postdropdown', 'createbox', true);
    function createbox($tag){
    
    	$name = $tag['name'];
    	$options = (array) $tag['options'];
    	$values = (array) $tag['values'];
    
    	foreach ($options as $option) {
    		if (preg_match('%^(\d*)[/x](\d*)$%i', $option, $matches)) {
    			$size_att = (int) $matches[1];
    			$maxlen_att = (int) $matches[2];
    		}
    	}
    
    	$args = array('category_name' => 'property-list' );
    	$output = "<select name='".$name."' id='".$name."' onchange='document.getElementById(\"" . $name ."\").value=this.value;' style='min-width:".$maxlen_att."px; max-width:".$maxlen_att."px; border:none; margin-top: 5px; margin-bottom:5px;'><option></option>";
    	$query2 = new WP_Query( $args );
    
    	// The 2nd Loop
    	while( $query2->have_posts()):
    		$query2->next_post();
    		$output .= "<option value='$title'>".get_the_title( $query2->post->ID )."</option>";
    	endwhile;
    	$output .= "</select>";
    
    	return $output;
    }

    So the shortcode will become [postdropdown post_selection /100] and mailtemplate can be [post_selection]

  9. andrea82
    Member
    Posted 1 year ago #

    What if I want to shoow all the posts published by the user in a dropbox? I need this to let the contributors choose from this list the name of teh post they want the admin to be removed...

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic