我正在使用ACF tutorial here to build from. 我想要做的是使用文本子字段中的值来填充同一个转发器字段中的其他选择子字段。我知道它听起来像递归,也许这是令人望而却步的。字段管理员不会是ajax-y或动态更新,它更像是其他网站功能的管理字段。
无论如何,这是我到目前为止所拥有的。
我已经尝试修改上面链接的教程中的代码,并将其放在主题的functions.php和插件的主文件中,我正在构建其他自定义函数。
/**
* ACF population functions
*/
function acf_load_core_values_field_choices( $field ) {
// reset choices
$field['choices'] = array();
// if has rows
if( have_rows('core_values', 'valuesadmin') ) {
// while has rows
while( have_rows('core_values', 'valuesadmin') ) {
// instantiate row
the_row();
// vars
$value = get_sub_field('value_name');
$label = get_sub_field('value_name');
// append to choices
$field['constructor1_name'][ $value ] = $label;
$field['constructor2_name'][ $value ] = $label;
$field['constructor3_name'][ $value ] = $label;
$field['destructor1_name'][ $value ] = $label;
$field['destructor2_name'][ $value ] = $label;
}
}
// return the field
return $field;
}
add_filter('acf/load_field/name=constructor1_name', 'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=constructor2_name', 'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=constructor3_name', 'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=destructor1_name', 'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=destructor2_name', 'acf_load_core_values_field_choices');
显然,这并不像我想的那样传播选择子字段。
问题: - 这是否可行(value_name字段都已填充值) - 功能代码应该放在哪里? - 也许我以某种方式破坏了代码
提前致谢!
答案 0 :(得分:0)
好吧,我通过首先将所有内容移动到ACF选项页面然后创建另一个ACF字段(values_master)来实现我正在寻找的功能,我可以在选项页面的第二个字段中动态填充值。所以我不确定这是否因为某些递归而无效,但它正在工作。
function acf_load_value_field_choices( $field ) {
// reset choices
$field['choices'] = array();
// if has rows
if( have_rows('values_master', 'option') ) {
// while has rows
while( have_rows('values_master', 'option') ) {
// instantiate row
the_row();
// vars
$value = get_sub_field('value_name');
$label = get_sub_field('value_name');
// append to choices
$field['choices'][ $value ] = $label;
}
}
// return the field
return $field;
}
add_filter('acf/load_field/name=constructor1_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=constructor2_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=constructor3_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=destructor1_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=destructor2_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=value_mstr_name', 'acf_load_value_field_choices');