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;                    
}