我正在使用WordPress
& Gravity Forms plugin
并且我正在尝试使用以下代码将参数从第三方提供商传递到Gravity Form
Dynamic Population,并使用以下代码
<form method="post" name="goToForm" action="http://www.example.com/?page_id=123">
<input type="hidden" name="param" value="Hello">
<input type="submit" name="fromSubmit" value="Submit">
</form>
请注意,上述http://www.example.com/?page_id=123
是Gravity Form
网址。
我找到的最接近的解决方案是使用HOOK方法,但我仍然想知道如何使用post中的HOOK方法调用在functions.php中创建的自定义函数并传递参数。
任何建议都将受到赞赏
答案 0 :(得分:2)
如果我正确理解你,你想传递表格网址上的参数?
您可以通过两种方式完成此任务:
网址:http://www.example.com/?page_id=123
保存表单后,检查隐藏字段,您应该将其值视为123
您可以添加钩子功能:
add_filter('gform_field_value_page_id', 'my_custom_population_function');
function my_custom_population_function($value){
return $value'; //or do what ever you want with it
}
如果您想自动将页面标题或ID添加到表单:
添加隐藏字段,在该字段的高级部分中,将此{embed_post:ID}
(帖子ID)添加到默认值。 OR
添加隐藏字段,在字段的高级部分中,将此{embed_post:post_title}
(帖子标题)添加到默认值。
修改强>
用户正在寻找http://www.gravityhelp.com/documentation/page/Gform_after_submission
您可以从表单中获取字段/参数,然后将其保存到数据库,更新Wordpress页面/帖子或将其发送给第三方服务提供商。
我不太确定用户想要对参数做什么,因此我将展示将其发送给第三方提供商的示例:
我们需要输入字段编号,以便我们可以获得正确的字段:
/* Getting correct field numbers */add_action("gform_after_submission", "post_to_third_party", 10, 2); function post_to_third_party($entry, $form){ // Lets get the IDs of the relevant fields and prepare an email message $message = print_r($entry, true); // In case any of our lines are larger than 70 characters, we should use wordwrap() $message = wordwrap($message, 70); // Send mail('you@domain.com', 'Getting the Gravity Form Field IDs', $message); }
你应该在邮件中得到这样的东西:
Array
(
[id] => 64
[form_id] => 5
[date_created] => 2014-07-02 13:27:00
[is_starred] => 0
[is_read] => 0
[ip] => ::1
[source_url] => http://localhost/
[post_id] =>
[currency] => USD
[payment_status] =>
[payment_date] =>
[transaction_id] =>
[payment_amount] =>
[payment_method] =>
[is_fulfilled] =>
[created_by] => 1
[transaction_type] =>
[user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153
Safari/537.36
[status] => active
[1] => Name
[4] => Parameter
)
其中[1] => Name
是名称字段,我输入了名称进行测试,[4] => Parameter
是参数字段,默认值为参数。
在我们获得正确的字段编号后,我们可以将其提交给第三方提供商,我在此示例中使用curl:
//Submitting to thirdparty.com using curl
function post_to_url($url, $data) {
$fields = '';
foreach($data as $key => $value) {
$fields .= $key . '=' . $value . '&';
}
rtrim($fields, '&');
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($post, CURLOPT_HEADER, 1); //if you want headers
curl_setopt($post, CURLOPT_HEADER, "Content-Type:application/xml");
$result = curl_exec($post);
//If there's an error
if($result === false)
{
echo "Error Number:".curl_errno($ch)."<br>";
echo "Error String:".curl_error($ch);
}
curl_close($post);
}
if($form["id"] == 1){//Form ID
//Lets get the fields to match submission to thirdparty.com
$data = array(
"FirstName" => $entry["1"],
"ParameterName" => $entry["4"]
);
post_to_url("http://thirdparty.com", $data);
}
如果您希望钩子适用于特定表单gform_after_submission_1
,则仅适用于表单ID 1。