【问题标题】:How to submit an outside variable to Gravity Forms through WP filter如何通过 WP 过滤器向 Gravity Forms 提交外部变量
【发布时间】:2014-10-09 14:57:46
【问题描述】:

这种类型的工作对我来说是新的,所以如果答案很简单,请耐心等待。

我在我的网站上使用 Wordpress 和 Gravity Forms,我想使用来自对象的数据预填充表单(该对象来自 API,所以我不能只使用 wordpress current_user 对象)。

如何在 wordpress 过滤器中使用外部变量?

例如:

$fname = $object->first_name;
add_filter('gform_field_value_firstname', *Populate the field with $fname*);

以下是函数的正常用法,来自 Gravity Forms Docs (http://www.gravityhelp.com/documentation/page/Gform_field_value_$parameter_name)

add_filter('gform_field_value_firstname', "dothis");

“dothis”指向一个函数。

以下方法也有效(基于这篇优秀的文章:http://www.doitwithwp.com/pre-populate-fields-using-gravity-forms/):

add_filter('gform_field_value_firstname', create_function("", 'return "John";' ));

但是,我不知道如何让它也接受外部变量。例如,我想做:

$fname = $object->first_name;
add_filter('gform_field_value_firstname', create_function("", 'return $fname;' ));

但是 php 告诉我 fname 是一个未定义的变量。

我已经查看了这个线程 PHP: How to make variable visible in create_function()? ,但我无法让 Closure 解决方案发挥作用。我有 PHP 版本 5.2.17。

能否请您发布一个如何正确执行此操作的示例?

【问题讨论】:

    标签: php wordpress gravity-forms-plugin


    【解决方案1】:

    $fname 设为全局变量,您可以在create_function 中将其作为全局变量引用。

    global $fname = $object->first_name;
    add_filter( 'gform_field_value_firstname', create_function( '', 'global $fname; return $fname;' ) );
    

    但是,如果要返回多个值,最好将 $object 设为全局:

    global $object;
    add_filter( 'gform_field_value_firstname', create_function( '', 'global $object; return 
    $object->first_name;' ));
    add_filter( 'gform_field_value_lastname', create_function( '', 'global $object; return $object->last_name;' ));
    

    等等……

    【讨论】:

      猜你喜欢
      • 2015-08-01
      • 2013-04-20
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 2015-03-06
      • 2011-07-31
      相关资源
      最近更新 更多