Я использовал следующий код для добавления заголовков постов в поле флажка в гравитационных формах.
Мне нужно заполнить несколько полей флажков в одной форме с различными категориями сообщений.
Приведенный ниже код работает для заполнения полей. Однако поле id 8 заполняет категорию 5-7 лет, а также свою собственную назначенную категорию +, это продолжается и с полем 9.
//NOTE: update the '12' to the ID of your form
add_filter( 'gform_pre_render_12', 'populate_checkbox' );
add_filter( 'gform_pre_validation_12', 'populate_checkbox' );
add_filter( 'gform_pre_submission_filter_12', 'populate_checkbox' );
add_filter( 'gform_admin_pre_render_12', 'populate_checkbox' );
function populate_checkbox( $form ) {
foreach( $form['fields'] as &$field ) {
//NOTE: replace 4 with your checkbox field id
if ( !in_array( $field->id, array( 4, 8, 9 ) ) ) {
continue;
}
// you can add additional parameters here to alter the posts that are retrieved
// more info: [http://codex.wordpress.org/Template_Tags/get_posts](http://codex.wordpress.org/Template_Tags/get_posts)
switch( $field->id ) {
case 4:
$posts = get_posts( 'numberposts=-1&post_status=any&category_name=5-7 Years' );
break;
case 8:
$posts = get_posts( 'numberposts=-1&post_status=any&category_name=8-11 Years' );
break;
case 9:
$posts = get_posts( 'numberposts=-1&post_status=any&category_name=Adults' );
break;
}
$input_id = 1;
foreach( $posts as $post ) {
//skipping index that are multiples of 10 (multiples of 10 create problems as the input IDs)
if ( $input_id % 10 == 0 ) {
$input_id++;
}
$choices[] = array( 'text' => $post->post_title, 'value' => $post->post_title );
$inputs[] = array( 'label' => $post->post_title, 'id' => "{$field_id}.{$input_id}" );
$input_id++;
}
$field->choices = $choices;
$field->inputs = $inputs;
}
return $form;
}
Вот пара скриншотов, чтобы проиллюстрировать, что происходит и что я пытаюсь сделать:
http://carlyspicer.com/wp-content/uploads/2016/10/gravity-update-screenshot.jpg
http://carlyspicer.com/wp-content/uploads/2016/10/gravity-update-screenshot-2.jpg
У вас есть предложения, чтобы это исправить?
Заранее спасибо за помощь!
Задача ещё не решена.
Других решений пока нет …