【问题标题】:Multisite - passing ACF values from current site to Gravity Forms form from another site on multisite多站点 - 将 ACF 值从当前站点传递到多站点上另一个站点的重力表单
【发布时间】:2019-09-12 01:57:00
【问题描述】:

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

<?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 字段正常工作(通常),我为每个字段测试了 &lt;?php the_field(); ?&gt;,并且数据肯定在那里......所以我假设它与我的事实有关m 从多站点上的不同站点拉取表单。

有人对如何将数据从我当前的站点传递到博客 1 表单有任何想法吗?提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

    站点 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 而不是当前博客中提取信息 - 即使在选项中设置它也是如此。我让它工作的唯一方法是,如果我将确切的数字博客 ID 放入函数中,但每个站点都将使用来自我手动输入的任何博客 ID 的信息。不过,我确实想出了另一种方法。不管怎么说,还是要谢谢你! :)
    【解决方案2】:

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

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

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

    1. 我将重力表格导出/导入到另一个站点 共享相同主题的多站点(所以我没有研究两个 不同的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(); ?>
      

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 1970-01-01
      • 2011-09-06
      • 2015-05-30
      • 2016-10-01
      • 1970-01-01
      • 2017-12-22
      • 2012-09-28
      • 1970-01-01
      相关资源
      最近更新 更多