Мультисайт - передача значений ACF с текущего сайта в форму Gravity Forms с другого сайта на мультисайте - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь передать данные из расширенных пользовательских полей в форму Gravity Forms. Проблема, с которой я сталкиваюсь, заключается в том, что форма создается с другого сайта на мультисайте через:

<?php switch_to_blog(1);?>   
     <?php echo do_shortcode( '[gravityform id="3" title="false" 
     description="false"]' ); ?>
<?php restore_current_blog(); ?>

В моем файле functions.php (как для блога 1, так и для текущего сайта) у меня есть:

add_filter( 'gform_field_value_lead_source_detail', 'populate_lead_source_detail' );
function populate_lead_source_detail( $value ) {

   $leadsourcedetail = get_field('lead_source_detail', $post->ID);
   return $leadsourcedetail;
}

add_filter( 'gform_field_value_lifecycle_status', 'populate_lifecycle_status' );
function populate_lifecycle_status( $value ) {
   $lifecycle = get_field('lifecycle_status', $post->ID);
   return $lifecycle;
}

add_filter( 'gform_field_value_lead_source', 'populate_lead_source' );
function populate_lead_source( $value ) {
   $leadsource = get_field('lead_source', $post->ID);
   return $leadsource;
}

add_filter( 'gform_field_value_channel', 'populate_channel' );
function populate_channel( $value ) {
   $channel = get_field('channel', $post->ID);
   return $channel;
}

add_filter( 'gform_field_value_expected_op_type', 'populate_expected_op_type' );
function populate_expected_op_type( $value ) {
   $expected = get_field('expected_op_type', $post->ID);
   return $expected;
}

Поля ACF отлично работают в блоге 1, из которого создается Gravity Form, но я не могу заставить их передавать данные в форму текущего текущего блога.

Чтобы убедиться, что поля ACF работают (в общем), я протестировал <?php the_field(); ?> для каждого из них, и данные определенно есть ... поэтому я предполагаю, что это как-то связано с тем, что я ' м вытягивая форму с другого сайта на мультисайте.

У кого-нибудь есть идеи, как передать данные с моего текущего сайта в форму блога 1? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Пошёл об этом совершенно по-другому.Нашел это в документах Gravity Forms: https://docs.gravityforms.com/using-dynamic-population/ - под шорткодами:

[gravityform id=1 field_values=’parameter_name1=value1&parameter_name2=value2′]

Хотел бы я найти это, прежде чем потратить на это целый день.Lol ... Вот мои шаги после этого:

  1. Я экспортировал / импортировал Gravity Form на другой сайт в мультисайте, который использовал ту же тему (поэтому я не работал над двумяразные functions.php файлы, поэтому идентификаторы блогов и Gravity Forms ниже).

  2. Я удалил все функции, которые я изначально создал, в файле functions.php, который я указывал ранее.(populate_lead_source_detail, populate_lifecycle_status и т. Д.)

  3. Я создал переменные из полей ACF для этой страницы.

    <?php $lead_source_detail = get_field('lead_source_detail'); $lifecycle_status = get_field('lifecycle_status'); $lead_source = get_field('lead_source'); $channel = get_field('channel'); $expected_op_type = get_field('expected_op_type'); ?>

  4. Я вызвал переменные в шорткоде.(См. Мой окончательный код ниже.)

                    <?php switch_to_blog(11);?>   
    
                        <?php echo do_shortcode( '[gravityform id="1" title="false" description="false" field_values="lead_source_detail='.$lead_source_detail.'&lifecycle_status='.$lifecycle_status.'&lead_source='.$lead_source.'&channel='.$channel.'&expected_op_type='.$expected_op_type.'"]' ); ?>
    
                    <?php restore_current_blog(); ?>
    
0 голосов
/ 23 апреля 2019

Сохраните ваши данные, используя опции, а затем попробуйте получить к ним доступ.

Сайт 1 -> Site1_only_plugin -> Site1_only_plugin_function () -> add_option ('Site1_only_plugin_option', $ var)

Вы должны сослаться на комментарий Брента Ливитта в ссылке ниже. Вот где я нашел это.

https://developer.wordpress.org/reference/functions/switch_to_blog/

Вероятно, это то, что вам нужно.

Надеюсь, это поможет.

...