多站点 - 将 ACF 值从当前站点传递到多站点上另一个站点的 Gravity Forms 表单

Multisite - passing ACF values from current site to Gravity Forms form from another site on multisite

我正在尝试将高级自定义字段中的数据传递到我的 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(); ?>,并且数据确实存在......所以我假设它与事实上,我正在从多站点的不同站点提取表单。

有人知道如何将数据从我当前的站点传递到 blog 1 表单吗?提前致谢!

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

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

您应该在下面 link 中参考 Brent Leavitt 的评论。那是我找到这个的地方。

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

可能这就是你需要的。

希望对您有所帮助。

以完全不同的方式处理这个问题。在 Gravity Forms 文档中找到了这个:https://docs.gravityforms.com/using-dynamic-population/——在简码下:

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

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

  1. 我 exported/imported 重力形式到另一个网站 共享相同主题的多站点(所以我没有在两个 不同的 functions.php 个文件;这就是为什么下面的博客 id 和 Gravity Forms id 不同的原因)。

  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(); ?>