<?php
// The 4 on these add_filters is the ID of the form you want to populate
add_filter( 'gform_pre_render_4', 'populate_posts' );
add_filter( 'gform_pre_validation_4', 'populate_posts' );
add_filter( 'gform_pre_submission_filter_4', 'populate_posts' );
add_filter( 'gform_admin_pre_render_4', 'populate_posts' );
function populate_posts( $form ) {
foreach ( $form['fields'] as &$field ) {
// Change the field type to the desired type and 'poppulate-posts' needs to be the class
// of the field you want populated.
if ( $field->type != 'multiselect' || strpos( $field->cssClass, 'populate-posts' ) === false ) {
continue;
}
// you can add additional parameters here to alter the posts that are retrieved
// more info: http://codex.wordpress.org/Template_Tags/get_posts
// The post_type should be the CPT slug. You can add other parameters if you need to narrow down
$posts = get_posts( 'post_type=job_listings' );
$choices = array();
foreach ( $posts as $post ) {
$choices[] = array( 'text' => $post->post_title, 'value' => $post->post_title );
}
// update 'Select a Post' to whatever you'd like the instructive option to be
$field->placeholder = 'Select a Position';
$field->choices = $choices;
}
return $form;
}