我正在为我的朋友做一些WordPress(6.1.1)的工作,我在WP和PHP(7.4.26)方面不是很有经验。
我需要在提交表单后向第三方CRM系统执行HTTP POST请求,此表单由WP插件Super Forms 6.3.312创建。Super Forms具有全局表单设置,允许您在提交时在给定URL上发布表单数据(默认行为是发送电子邮件):
我试过用(windows)PHP文件的路径,以及PHP文件的localhost路径(通过WP服务器)但那似乎并没有启动脚本。我已经发现你可以对PHP文件发出POST请求,$_POST变量将填充所有表单数据的数组,因此我知道在表单提交后启动PHP文件时如何获取数据。
我的疑问:
- 在提交超级表单表单后执行HTTP POST请求的最佳方法是什么?
- 我应该把PHP脚本放在哪里?
- 超级表单表单设置中PHP脚本的(相对)路径是什么?
示例:
- 这是表单提交时应执行的脚本,$_POST变量应填充表单数据IMHO(简化):
$company = $_POST['company'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$phonenumber = $_POST['phonenumber'];
$address = $_POST['address'];
$zipcode = $_POST['zipcode'];
$consumption = $_POST['consumption'];
$city = $_POST['city'];
$connectiontype = $_POST['connectiontype'];
$question = $_POST['question'];
$body = array(
'company' => $company,
'firstname' => $firstname,
'lastname' => $lastname,
'email' => $email,
'phonenumber' => $phonenumber,
'address' => $address,
'zipcode' => $zipcode,
'consumption' => $consumption,
'city' => $city,
'connectiontype' => $connectiontype,
'question' => $question,
);
$args = array(
'body' => $body
);
$response = wp_remote_post("URL of CRM system here", $args);
$body = wp_remote_retrieve_body($response);
1条答案
按热度按时间ymdaylpp1#
有几种方法可以做到这一点,但总是要用到WordPress hook
首先,WordPress有一个内置的钩子来使用和检查一个特定帖子类型的“帖子”是什么时候创建的。每次超级表单提交一个启用了“联系人条目”的表单时,它都会创建一个帖子类型为“super_contact_entry”的新帖子。https://renstillmann.github.io/super-forms/#/data-storage?id=where-are-the-contact-entries-stored
关于此WP挂钩的信息在这里:https://developer.wordpress.org/reference/hooks/wp_insert_post/
还有一些钩子可以监听正在更新的帖子,这样你就可以比较以前的帖子状态,或者这方面的任何元数据,然后做一些事情。
Super Forms本身也有钩子,用于监听表单提交,详细信息和示例代码如下:https://renstillmann.github.io/super-forms/#/hook-examples
帮助我的是将提交的表单数据发送到另一个站点