GravityForms 根据 ACF Post 类型字段预填充字段值 - 动态
GravityForms Pre-Populate Field Value based on ACF Post Type Field - Dynamically
我有一个自定义 post 类型,并且正在使用 Elementor、PAFE、ACF Pro 和 Gravity Forms。出于视觉原因,我使用了 PAFE/Elementor,在我的表单流程结束时,我创建了一个自定义 Post 类型 "Contract",然后一旦创建了合同,它就会重定向到一个带有重力表单的页面在它上面(隐藏 ACF 值)。我希望与合同关联的自定义字段值与重力形式共享,但我没有成功映射它。
我已经试过了,但没有成功。我不确定我需要在自定义值中加载哪个 GravityForms 过滤器。
引用:
https://docs.gravityforms.com/gform_field_value_parameter_name/
add_filter( 'gform_field_value', 'populate_fields');
function populate_fields( $value, $field, $name ) {
$values = array(
'pc' => get_field('pc',),
'dc' => get_field('dc'),
'tt' => get_field('tt'),
'rd' => get_field('rd'),
'vl' => get_field('vl'),
'on' => get_field('on'),
'fn' => get_field('fn'),
'ln' => get_field('ln'),
'cp' => get_field('cp'),
'ph' => get_field('ph'),
'e' => get_field('e'),
'apd' => get_field('apd'),
'tariff' => get_field('tariff'),
'c2c' => get_field('c2c'),
'tsc' => get_field('tsc'),
'awc' => get_field('awc'),
'pp_address' => get_field('pp_address'),
'pp_fn' => get_field('pp_fn'),
'pp_ln' => get_field('pp_ln'),
'pp_biz' => get_field('pp_biz'),
'pp_ph' => get_field('pp_ph'),
'pp_notes' => get_field('pp_notes'),
'do_address' => get_field('do_address'),
'do_fn' => get_field('do_fn'),
'do_ln' => get_field('do_ln'),
'do_biz' => get_field('do_biz'),
'do_notes' => get_field('do_notes')
);
return isset( $values[ $name ] ) ? $values[ $name ] : $value;
}
您必须检查您的 ACF 字段和重力表密钥是否有效。您还可以在从 get_field() 获取数据时传递 id,如下所示:
此示例显示了各种 $post_id 值,以从 post、用户、术语和选项中获取值。
$post_id = false; // current post
$post_id = 1; // post ID = 1
$post_id = "user_2"; // user ID = 2
$post_id = "category_3"; // category term ID = 3
$post_id = "event_4"; // event (custom taxonomy) term ID = 4
$post_id = "option"; // options page
$post_id = "options"; // same as above
$value = get_field( 'my_field', $post_id );
希望对您有所帮助。
谢谢你成功了,我能够让它像这样工作,但我没有分配变量来节省一些时间来编写代码,这可能不是性能方面的最佳实践,但它确实有效。
:
function populate_fields( $value, $field, $name ) {
//to use current post
$post_id = false;
$values = array(
'do_notes' => get_field( 'do_notes', $post_id ),
);
return isset( $values[ $name ] ) ? $values[ $name ] : $value;
}
我有一个自定义 post 类型,并且正在使用 Elementor、PAFE、ACF Pro 和 Gravity Forms。出于视觉原因,我使用了 PAFE/Elementor,在我的表单流程结束时,我创建了一个自定义 Post 类型 "Contract",然后一旦创建了合同,它就会重定向到一个带有重力表单的页面在它上面(隐藏 ACF 值)。我希望与合同关联的自定义字段值与重力形式共享,但我没有成功映射它。
我已经试过了,但没有成功。我不确定我需要在自定义值中加载哪个 GravityForms 过滤器。
引用: https://docs.gravityforms.com/gform_field_value_parameter_name/
add_filter( 'gform_field_value', 'populate_fields');
function populate_fields( $value, $field, $name ) {
$values = array(
'pc' => get_field('pc',),
'dc' => get_field('dc'),
'tt' => get_field('tt'),
'rd' => get_field('rd'),
'vl' => get_field('vl'),
'on' => get_field('on'),
'fn' => get_field('fn'),
'ln' => get_field('ln'),
'cp' => get_field('cp'),
'ph' => get_field('ph'),
'e' => get_field('e'),
'apd' => get_field('apd'),
'tariff' => get_field('tariff'),
'c2c' => get_field('c2c'),
'tsc' => get_field('tsc'),
'awc' => get_field('awc'),
'pp_address' => get_field('pp_address'),
'pp_fn' => get_field('pp_fn'),
'pp_ln' => get_field('pp_ln'),
'pp_biz' => get_field('pp_biz'),
'pp_ph' => get_field('pp_ph'),
'pp_notes' => get_field('pp_notes'),
'do_address' => get_field('do_address'),
'do_fn' => get_field('do_fn'),
'do_ln' => get_field('do_ln'),
'do_biz' => get_field('do_biz'),
'do_notes' => get_field('do_notes')
);
return isset( $values[ $name ] ) ? $values[ $name ] : $value;
}
您必须检查您的 ACF 字段和重力表密钥是否有效。您还可以在从 get_field() 获取数据时传递 id,如下所示:
此示例显示了各种 $post_id 值,以从 post、用户、术语和选项中获取值。
$post_id = false; // current post
$post_id = 1; // post ID = 1
$post_id = "user_2"; // user ID = 2
$post_id = "category_3"; // category term ID = 3
$post_id = "event_4"; // event (custom taxonomy) term ID = 4
$post_id = "option"; // options page
$post_id = "options"; // same as above
$value = get_field( 'my_field', $post_id );
希望对您有所帮助。
谢谢你成功了,我能够让它像这样工作,但我没有分配变量来节省一些时间来编写代码,这可能不是性能方面的最佳实践,但它确实有效。 :
function populate_fields( $value, $field, $name ) {
//to use current post
$post_id = false;
$values = array(
'do_notes' => get_field( 'do_notes', $post_id ),
);
return isset( $values[ $name ] ) ? $values[ $name ] : $value;
}