这是我想要实现的目标的简单示例:
我有一个具有不同部分的重力形式,将通过动态预填充有条件地显示。问题是我似乎无法根据我的 ACF 数据(也是复选框(填充它们。
如果我将值放入代码中,它的工作原理如下:
add_filter( 'gform_pre_render_2', 'my_populate_checkbox' );
function my_populate_checkbox( $form ) {
foreach( $form['fields'] as &$field ) {
if( 11 === $field->id ) {
foreach( $field->choices as &$choice ) {
if( 'mychoice' === $choice['value'] || 'anotherchoice' === $choice['value'] ) {
$choice['isSelected'] = true;
}
}
}
}
return $form;
}
为了让它动态填充,我尝试了这样的东西,但不起作用(对于 php 来说不是那么好(:
add_filter( 'gform_pre_render_2', 'my_populate_checkbox' );
function my_populate_checkbox( $form ) {
foreach( $form['fields'] as &$field ) {
if( 11 === $field->id ) {
foreach( $field->choices as &$choice ) {
$addons = get_field('addons');
if( $addons === $choice['value'] ) {
$choice['isSelected'] = true;
}
}
}
}
return $form;
}
它不起作用,我知道我在这里错过了一些东西,但无法弄清楚它是什么:/任何帮助或指示将不胜感激!我试图保持精确,但如果需要更多信息,请告诉我,我会相应地更新帖子。
在一些帮助下想通了:( 如果有人需要此功能,以下是它的工作原理:
add_filter( 'gform_pre_render_2', 'my_populate_checkbox' );
function my_populate_checkbox( $form ) {
global $post;
$adfields = get_field( 'addons', get_the_ID() );
foreach( $form['fields'] as &$field ) {
if( 11 === $field->id ) {
foreach( $field->choices as &$choice ) {
if( in_array( $choice['value'] ,$adfields )) {
$choice['isSelected'] = true;
}
}
}
}
return $form;
}