【问题标题】:Dynamic Dropdowns for Lists in Gravity Forms重力形式列表的动态下拉列表
【发布时间】:2017-05-03 12:43:54
【问题描述】:

我想将 Gravity Forms 中的列表字段之一设为动态下拉列表。我有使其中一个字段成为下拉列表的代码和使下拉列表动态的代码。请问有人可以帮我结合这两个sn-ps的代码吗?

这是动态下拉菜单的代码

add_filter( 'gform_pre_render_17', populate_dropdown_operations_global_tag1 );
add_filter( 'gform_admin_pre_render_17', 
populate_dropdown_operations_global_tag1 );

function populate_dropdown_operations_global_tag1( $form ) {

global $wpdb;
global $loc_id;

$results = $wpdb->get_results( "SELECT name FROM custom_tag WHERE loc_id=$loc_id AND category='global_tag1' AND status='active' ORDER BY name ASC" );
$category = $wpdb->get_row( "SELECT name FROM custom_category WHERE loc_id=$loc_id AND category='global_tag1'" );

$choices = array();
$choices[] = array( "text" => "Select ".$category->name, "value" => " " );

foreach( $results as $result ) :
    $choices[] = array( "text" => $result->name, "value" => $result->name );
endforeach;

foreach( $form["fields"] as &$field ) :
    if( $field["id"] == '36' ) :
        $field["choices"] = $choices;
    endif;
endforeach;

return $form;
}

这是列表中下拉列表的代码

add_filter( 'gform_column_input_17_36_1', 'set_column1', 10, 5 );
function set_column1( $input_info, $field, $column, $value, $form_id ) {
 return array( 'type' => 'select', 'choices' => 'NEED TO ADD CHOICES HERE' );
}

谢谢!

【问题讨论】:

  • 这不是已经奏效了吗?您的最后一个 foreach 应该将所有选择添加到您的下拉列表中。你还需要什么?
  • 它不起作用。按原样使用代码将第一个 sn-p 中的选择作为列表的标签。然后我不知道如何将选择从第一个函数调用到第二个函数。我尝试将它们结合起来,但无法正常工作

标签: wordpress gravity-forms-plugin


【解决方案1】:

根据您的评论,我将向您展示如何使用您的数据库中的选项填充下拉列表:

           add_filter("gform_pre_render_17", "example_pre_render", 10 , 3);

            function example_pre_render($form, $ajax, $field_values) {
              global $wpdb;
              global $loc_id;
              $results = $wpdb->get_results( "SELECT name FROM custom_tag WHERE loc_id=$loc_id AND category='global_tag1' AND status='active' ORDER BY name ASC" );
              $category = $wpdb->get_row( "SELECT name FROM custom_category WHERE loc_id=$loc_id AND category='global_tag1'" );

              $choices = array();
              $choices[] = array( 
                                "text" => "Select ".$category->name, 
                                "value" => " ",
                                "isSelected" => true,
                                "price" => ""
                          );

              foreach( $results as $result ) {
                  $choices[] = array( 
                                    "text" => $result->name, 
                                    "value" => $result->name,
                                    "isSelected" => false,
                                    "price" => ""  
                                );
              }
             $form["fields"][36]->choices = $choices

             return $form;
            }

如果这没有填充下拉列表,我将通过代码进行调试以查看 $results 是否具有值以及 $form 对象在返回时的样子。

它应该看起来像这样:

我知道它在这里是一个复选框,但它应该几乎是一样的。

【讨论】:

  • 感谢您的帮助,但这不起作用,因为它删除了将列表字段更改为下拉列表的代码。
  • 嗯...为什么要创建一个列表字段并将其更改为下拉菜单?您可以只创建重力形式的下拉菜单吗?
  • 我想有行添加功能。
猜你喜欢
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 2014-01-04
  • 2016-10-07
  • 2012-11-13
相关资源
最近更新 更多