Предварительное заполнение поля GravityForms на основе поля типа публикации ACF — динамически

У меня есть собственный тип сообщений, и я использую Elementor, PAFE, ACF Pro и Gravity Forms. По визуальным причинам я использовал PAFE/Elementor, и в конце процесса создания формы я создаю пользовательский тип сообщения «Контракт», а затем, как только контракт создан, он перенаправляется на страницу с гравитационной формой (скрывая значения 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;
}


person fullninja    schedule 10.12.2019    source источник


Ответы (2)


Вы должны проверить, действительны ли ваши поля ACF и ключ гравитационной формы. Вы также можете передать идентификатор при получении данных из get_field(), как показано ниже:

В этом примере показаны различные значения $post_id для получения значения из сообщения, пользователя, термина и параметра.

$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 );

Я надеюсь, что это поможет вам.

person Govind Soni    schedule 10.12.2019

Спасибо, что сделали трюк, я смог заставить его работать так, но я не назначал переменную, чтобы сэкономить время на написание кода, вероятно, не лучшая практика с точки зрения производительности, но это работает. :


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;                    
}
person fullninja    schedule 10.12.2019