Gravity基于ACF中继器场形成动态条件逻辑

问题描述 投票:0回答:0

我今天偶然发现了一个有趣的问题。这涉及到 Wordpress、ACF 和 Gravity Forms。

上下文:

我有一个带有转发器字段(名为 parution_dates)的选项页面设置。此转发器字段有一个文本字段(名为“date”= 字符串格式的日期)和一个“is_all”字段(单选字段 =“oui”或“non”)用于每次重复出现。

现在。我创建了一个函数,允许我动态填充下拉列表的选项,它是以下代码片段。

在该片段中,我试图向所有具有“条件逻辑”CSS 类的字段添加条件逻辑。我试图使用该条件规则实现的目标如下:

  • 如果所选日期与 is_all 设置为“oui”的日期匹配,则仅显示输入(使用“条件逻辑”类)。

出于某些原因,我没有弄清楚。我觉得我在搞乱规则,但我不确定哪里出了问题。目前,具有“条件逻辑”CSS 类的字段根本不显示。

有人能指出我在那里做错了什么吗?太棒了:)

这里是我的功能:

add_filter( 'gform_pre_render', 'populate_dropdown' );
add_filter( 'gform_pre_validation', 'populate_dropdown' );
add_filter( 'gform_pre_submission_filter', 'populate_dropdown' );
add_filter( 'gform_admin_pre_render', 'populate_dropdown' );

function populate_dropdown( $form ) {
    // Get the ACF field value
    $choices_raw = get_field( 'parution_dates', 'option' ); 

    $choices = array();
    if ( $choices_raw ) {
        foreach ( $choices_raw as $choice ) {
            $choices[] = array(
                'value' => $choice['date'], 
                'text' => $choice['date'], 
                'is_all' => $choice['is_all'],
            );
        }
    }

    foreach ( $form['fields'] as &$field ) {
        // Populate select field with ACF field value
        if ( $field->type == 'select' && strpos( $field->cssClass, 'populate-acf' ) !== false ) {
            $field->choices = $choices;
        }


        if ( strpos( $field->cssClass, 'conditional-logic' ) !== false ) {
            $rules = array();
            foreach ( $choices as $choice ) {
                if ( $choice['is_all'] == 'oui' ) {
                    $value = $choice['value'];
                    $rule = array(
                        'fieldId' => $field->id,
                        'operator' => 'is',
                        'value' => $value,
                    );
                    $rules[] = $rule;
                }
            }

            if ( ! empty( $rules ) ) {
                $conditional_logic = array(
                    'actionType' => 'show',
                    'logicType' => 'any',
                    'rules' => $rules,
                );
                $field->conditionalLogic = $conditional_logic;
            }
        }
    }

    return $form;
}
wordpress advanced-custom-fields gravity gravityforms
© www.soinside.com 2019 - 2024. All rights reserved.