我今天偶然发现了一个有趣的问题。这涉及到 Wordpress、ACF 和 Gravity Forms。
上下文:
我有一个带有转发器字段(名为 parution_dates)的选项页面设置。此转发器字段有一个文本字段(名为“date”= 字符串格式的日期)和一个“is_all”字段(单选字段 =“oui”或“non”)用于每次重复出现。
现在。我创建了一个函数,允许我动态填充下拉列表的选项,它是以下代码片段。
在该片段中,我试图向所有具有“条件逻辑”CSS 类的字段添加条件逻辑。我试图使用该条件规则实现的目标如下:
出于某些原因,我没有弄清楚。我觉得我在搞乱规则,但我不确定哪里出了问题。目前,具有“条件逻辑”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;
}