Hi Nithin @wpmudevsupport11 and Patrick @wpmudevsupport12,
Thank you Nithin for passing my comments on. And for one/both of you, I have tried adapting the code for a list of custom posts by the current user rather than a list of users (on separate forms) but I can’t get it to work – the dropdown for posts appears but it doesn’t get populated (I have tried it with just a straight get_posts() as well) – it just displays ” No results found”; also if I wanted to make multiple selections it doesn’t work for either the user list or posts list. I know this is custom coding so I will understand if you are unable to assist, but if you could give a hint or a link to something that would help me I would be very grateful. Just for reference here is the code I have attempted (including the part that does work for users) – I don’t think I have made any typos;
//Forminator filter to make users dropdown on one form (142) which works and posts dropdown on another form (175) which doesn't
add_filter( 'forminator_cform_render_fields', function( $wrappers, $model_id ) {
if (( $model_id != 142 ) || ( $model_id != 175 )){
return $wrappers;
}
if ( $model_id == 142 ) {
$select_fields_data = array(
'select-1' => 'users',
);
foreach ( $wrappers as $wrapper_key => $wrapper ) {
if ( ! isset( $wrapper[ 'fields' ] ) ) {
continue;
}
if ( isset( $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ] ) && ! empty( $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ] ) ) {
$users = get_users();
if ( ! empty( $users ) ) {
$new_options = array();
$user_names = array();
foreach( $users as $u ) {
$new_options[] = array(
'label' => $u->user_login,
'value' => $u->user_login,
'limit' => '',
'key' => forminator_unique_key(),
);
$user_names['options'] = $new_options;
}
$select_field = Forminator_API::get_form_field( $model_id, $wrapper['fields'][0]['element_id'], true );
if ( $select_field ) {
Forminator_API::update_form_field( $model_id, $wrapper['fields'][0]['element_id'], $user_names );
$wrappers[ $wrapper_key ][ 'fields' ][ 0 ][ 'options' ] = $new_options;
}
}
}
}
}
elseif ( $model_id == 175 ) {
$select_fields_data = array(
'select-1' => 'listings',
);
foreach ( $wrappers as $wrapper_key => $wrapper ) {
if ( ! isset( $wrapper[ 'fields' ] ) ) {
continue;
}
if ( isset( $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ] ) && ! empty( $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ] ) ) {
$user_id = get_current_user_id();
$args = array(
'post_type' => 'rtcl_listing',
'post_status' => 'publish',
'numberposts' => -1,
'author' => $user_id,
'meta_query' => array(
array(
'key' => 'ad_type',
'value' => 'market',
)
)
);
$listings = get_posts($args);
if ( ! empty( $listings ) ) {
$new_options = array();
$listing_names = array();
foreach( $listings as $l ) {
$new_options[] = array(
'label' => $l->post_title,
'value' => $l->post_title,
'limit' => '',
'key' => forminator_unique_key(),
);
$listing_names['options'] = $new_options;
}
$select_field = Forminator_API::get_form_field( $model_id, $wrapper['fields'][0]['element_id'], true );
if ( $select_field ) {
Forminator_API::update_form_field( $model_id, $wrapper['fields'][0]['element_id'], $listing_names );
$wrappers[ $wrapper_key ][ 'fields' ][ 0 ][ 'options' ] = $new_options;
}
}
}
}
}
return $wrappers;
},10,2);