如何通过WP过滤器向Gravity Forms提交外部变量

时间:2014-10-09 14:57:47

标签: php wordpress gravity-forms-plugin

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

我在我的网站上使用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。

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

1 个答案:

答案 0 :(得分:1)

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

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

但是,如果要返回多个值,那么使$ object global更好:

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;' ));

等等......