重力形式:动态创建字段集

我想让用户从下拉字段中选择自定义帖子类型并向其添加一些额外数据。

例如:用户可以从列表中选择一部电影。对于那部电影,他可以添加一定数量的副本,直到他想借到为止。

所以我一共有三个字段:

  1. 带有电影的下拉字段

  2. 数字字段

  3. 日期字段

我现在想为 WordPress 中的每部电影添加此字段集(自定义帖子类型)。因为我不知道我们在 WordPress 中有多少电影,所以我想动态生成字段。

幸运的是,我从 Gravity Forms 找到了 Repeater (beta) 字段。使用该字段,用户可以根据需要添加/删除电影。

演示和文档: https: //docs.gravityforms.com/repeater-fields/

问题是,我需要用 WordPress 中的电影 CPT 填充第一个字段(下拉列表)。

这是我当前的代码,用于生成表单中的转发器字段:

// Adjust your form ID

add_filter( 'gform_form_post_get_meta_5', 'add_my_field' );

function add_my_field( $form ) {

    $movie_sku = GF_Fields::create( array(

        'type'   => 'text',

        'id'     => 1002, // The Field ID must be unique on the form

        'formId' => $form['id'],

        'required' => true,

        'label'  => 'Movie',

        'class'  => 'col-md-4',

        'pageNumber'  => 1, // Ensure this is correct

    ) );

    $movie_amount = GF_Fields::create( array(

        'type'   => 'text',

        'id'     => 1007, // The Field ID must be unique on the form

        'formId' => $form['id'],

        'required' => true,

        'label'  => 'Amount',

        'pageNumber'  => 1, // Ensure this is correct

    ) );

    $movie_date = GF_Fields::create( array(

        'type'   => 'text',

        'id'     => 1001, // The Field ID must be unique on the form

        'formId' => $form['id'],

        'required' => true,

        'label'  => 'Date',

        'pageNumber'  => 1, // Ensure this is correct

    ) );



    $movie = GF_Fields::create( array(

        'type'             => 'repeater',

        'required'          => true,

        'id'               => 1000, // The Field ID must be unique on the form

        'formId'           => $form['id'],

        'label'            => 'Add movie',

        'addButtonText'    => 'Add Another movie',

        'removeButtonText'=> 'Remove movie',

        'pageNumber'       => 1, // Ensure this is correct

        'fields'           => array( $movie_sku,$movie_amount, $movie_date), // Add the fields here.

    ) );


    $form['fields'][] = $movie;


    return $form;

}



尚方宝剑之说
浏览 111回答 1
1回答

不负相思意

我想我找到了解决方案:在第一个之前,GF_Fields::create我必须从第二个函数中复制以下代码:$args = array(        'orderby'       =>  'title',        'order'         =>  'ASC',        'numberposts'   => -1,        'post_type'     => 'movie',        'post_status'   => array('publish'),        );        $posts = get_posts( $args );        $choices = array();        foreach ( $posts as $post ) {            $choices[] = array(                'text'  => $post->post_title,                'value' => $post->post_title            );        }然后我必须GF_Fields::create像这样编辑第一个:$movie_sku = GF_Fields::create( array(    'type'   => 'select',    'id'     => 1002, // The Field ID must be unique on the form    'formId' => $form['id'],    'required' => true,    'label'  => 'Movie',    'choices'  => $choices,    'pageNumber'  => 1, // Ensure this is correct) );新部分是'choices'  => $choices,从上面的代码中获取数据的部分。当然,我必须将输入类型更改为 select: 'type'   => 'select',。
打开App,查看更多内容
随时随地看视频慕课网APP