Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 以重力形式获取字段的值,并将该值用作php参数?_Wordpress_Gravity Forms Plugin_Gravityforms - Fatal编程技术网

Wordpress 以重力形式获取字段的值,并将该值用作php参数?

Wordpress 以重力形式获取字段的值,并将该值用作php参数?,wordpress,gravity-forms-plugin,gravityforms,Wordpress,Gravity Forms Plugin,Gravityforms,我试图在重力表单中动态填充两个下拉字段。第一个字段动态填充自定义帖子类型中可用的术语。我希望第二个动态填充的字段包含自定义文章类型中所有文章标题的列表,并根据上一个下拉列表中选择的术语过滤这些标题。是否可以在重力表单中获取下拉列表的值,并将该值作为参数传递到$args中,以使用get_posts($args)函数 我开始使用以下教程作为指导 第一个字段。以下代码填充一个下拉字段,其中包含自定义帖子类型(过程)中所有术语的列表: 第二个字段。以下代码使用自定义帖子类型(过程)的所有帖子标题动态填充

我试图在重力表单中动态填充两个下拉字段。第一个字段动态填充自定义帖子类型中可用的术语。我希望第二个动态填充的字段包含自定义文章类型中所有文章标题的列表,并根据上一个下拉列表中选择的术语过滤这些标题。是否可以在重力表单中获取下拉列表的值,并将该值作为参数传递到$args中,以使用get_posts($args)函数

我开始使用以下教程作为指导

第一个字段。以下代码填充一个下拉字段,其中包含自定义帖子类型(过程)中所有术语的列表:

第二个字段。以下代码使用自定义帖子类型(过程)的所有帖子标题动态填充该字段。我想根据上面选择的值过滤这些结果

    if ( $field->type != 'select' || strpos( $field->cssClass, 'populate_procedures' ) === false ) {
            continue;
        }

        $args = array(
            'post_status' => 'publish',
            'post_type' => 'procedure',
            'procedure_category' => 'cardiovascular',
        );

        $posts = get_posts( $args );

        $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 Procedure';
        $field->choices = $choices;
}

    return $form;
}

如果我明确列出了术语(在上面的示例中,我使用了“心血管”),则第二个动态填充字段成功地根据$args拉入已过滤的文章标题列表。我想知道的是,是否有一种方法可以获取前一个字段的值,并使用该值过滤第二个字段的结果(而不必重新加载页面)。有什么想法吗?重力表单是否具有类似于此的内置功能?

使用此方法,您需要使用多个页面,并将第二个下拉字段添加到表单的第二个页面。然后,当用户提交第一个页面时,您可以从$\u POST访问第一个下拉列表的值。Gravity Forms有一个用于执行此操作的助手方法,称为
rgpost()
。以下是您的
$args
的外观:

$args = array(
    'post_status' => 'publish',
    'post_type' => 'procedure',
    'procedure_category' => rgpost( 'input_FIELDID' ),
);
用第一个下拉列表的字段ID替换字段ID

话虽如此,如果您想在不接触任何代码的情况下完成此任务,请尝试重力表单填充任何内容


谢谢你,戴夫。多亏了你的帮助,我几乎可以让它按我所需要的方式工作——但最终将购买你的插件!期待您的任何反馈。
    if ( $field->type != 'select' || strpos( $field->cssClass, 'populate_procedures' ) === false ) {
            continue;
        }

        $args = array(
            'post_status' => 'publish',
            'post_type' => 'procedure',
            'procedure_category' => 'cardiovascular',
        );

        $posts = get_posts( $args );

        $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 Procedure';
        $field->choices = $choices;
}

    return $form;
}
$args = array(
    'post_status' => 'publish',
    'post_type' => 'procedure',
    'procedure_category' => rgpost( 'input_FIELDID' ),
);