多站点-将当前站点的ACF值从多站点上的另一个站点传递到重力形式表单

时间:2019-04-22 22:12:16

标签: php wordpress advanced-custom-fields multisite gravityforms

我正在尝试将“高级自定义字段”中的数据传递到“重力表单”表单中。我遇到的问题是表单是通过以下方式从多站点上的另一个站点生成的:

<?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上运行良好,但是我无法让它们将数据传递到当前当前博客上的表单。

为确保ACF字段正常运行,我为每个字段测试了<?php the_field(); ?>,并且数据肯定存在...所以我假设它与以下事实有关:我正在从多站点上的其他站点提取表单。

任何人都对如何将数据从当前站点传递到Blog 1表单有任何想法?预先感谢!

2 个答案:

答案 0 :(得分:0)

使用选项存储数据,然后尝试访问它。

站点1-> Site1_only_plugin-> Site1_only_plugin_function()-> add_option('Site1_only_plugin_option',$ var)

您应该在下面的链接中引用Brent Leavitt的评论。那是我发现的地方。

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

可能这就是您所需要的。

希望有帮助。

答案 1 :(得分:0)

以完全不同的方式进行了讨论。在Gravity Forms文档:https://docs.gravityforms.com/using-dynamic-population/中-在短代码下:

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

希望我在这一天之前能找到它。大声笑...之后是我的步骤:

  1. 我将重力表导出/导入了 共享相同主题的多站点(所以我当时并没有从事两个 不同的functions.php文件;这就是为什么Blog ID和Gravity Forms ID在下面不同)的原因。

  2. 我删除了最初在functions.php中创建的所有功能 我之前说过的文件。 (populate_lead_source_detailpopulate_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(); ?>