2014-10-09 25 views
0

這種類型的工作對我來說是新手,因此如果答案很簡單,請耐心等待。我想在我的網站上使用Wordpress和Gravity Forms,並且我想用對象中的數據預先填充表單(對象來自API,所以我不能只使用wordpress current_user對象)。如何通過WP過濾器將外部變量提交給Gravity Forms

如何在wordpress過濾器中使用外部變量?

例如:

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

的下面是該函數的正常使用,從重力表格文檔(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

使$fname成爲一個全局變量,您可以在您的create_function中作爲全局變量引用它。

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

不過,如果你有多個值返回,這是更好地使$反對全球:

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

等等......

+1

謝謝!這很好用! – dwlorimer 2014-10-10 19:40:36

相關問題