Php 无法从联系人表单7表单发送Wordpress之外的POST值
我的目标是通过发布联系表单7将值提交到重定向的外部php页面,并响应这些值 问题是,当页面在提交后被重定向时,值似乎丢失,除非我删除JS并更改表单的操作Url,最终删除所有需要验证、发送电子邮件等的联系人表单7功能 我尝试了多个插件,比如contact form 7 to API,它只能通过GET方法工作,我不希望这样。我试图获取发布的值并将其转换为会话,但它不起作用,因为我可能做错了什么 以下是表格: 下面是要显示的结果: 更新: 好的,我发布了一个函数来获取发布的数据和结果php文件中缺少的var_转储 这里是functions.phpPhp 无法从联系人表单7表单发送Wordpress之外的POST值,php,wordpress,contact-form-7,Php,Wordpress,Contact Form 7,我的目标是通过发布联系表单7将值提交到重定向的外部php页面,并响应这些值 问题是,当页面在提交后被重定向时,值似乎丢失,除非我删除JS并更改表单的操作Url,最终删除所有需要验证、发送电子邮件等的联系人表单7功能 我尝试了多个插件,比如contact form 7 to API,它只能通过GET方法工作,我不希望这样。我试图获取发布的值并将其转换为会话,但它不起作用,因为我可能做错了什么 以下是表格: 下面是要显示的结果: 更新: 好的,我发布了一个函数来获取发布的数据和结果php文件中缺
add_action( 'wpcf7_before_send_mail', 'send_post_values' );
if ($form_id == 7627) {
$user = $cf7->posted_data["user"];
$email = $cf7->posted_data["email"];
$country = $cf7->posted_data["country"];
//any code missing??
}
}
下面是show-values.php
<?php
var_dump($_POST);
print_r($_POST);
echo "Name: " . $_POST["user"] . "<br>";
echo "Email: " . $_POST["email"] . "<br>";
echo "Country: " . $_POST["country"] . "<br>";
?>
输出仍然丢失:
目前不使用cf7以外的任何额外插件。尝试这样做,而不是重定向到代码:
funtionThatCallsMyHandler() {
//yourcode
}
将其放在functions.php中,然后在调用重定向代码的地方执行以下操作:
funtionThatCallsMyHandler();
redirect
exit
这样一来,与链接重定向相比,它仍然首先拥有post数据。您可以使用联系表单7钩子进行此操作 试试这个:
add_action( 'wpcf7_before_send_mail', 'do_your_task' );
function do_your_task($cf7) {
$form_id = $cf7->id();
// Do some task only for specific form
if ($form_id == 123) { // 123 => Your Form ID.
$email = $cf7->posted_data["your-email"]; // Update "your-email" to the actual field name you have given in the form
$first_name = $cf7->posted_data["your-firstname"];
$last_name = $cf7->posted_data["your-lastname"];
//pass data to 3'rd party API
}
}
看到所有的
更新:
当你更新问题时。对于您的情况,您可以尝试以下方法:
您可以通过url或通过创建会话变量通过查询字符串发送值
在functions.php中添加此代码
add_action( 'wpcf7_before_send_mail', 'send_form_data' );
function send_form_data($cf7) {
$form_id = $cf7->id();
// Do some task only for specific form
if ($form_id == 123) { // 123 => Your Form ID.
$posted_data_str = http_build_query( array("data" => $cf7->posted_data ) );
$location = "https://www.xxxxx.xxx/forms/show-values.php?" . $posted_data_str;
wp_redirect( $location );
die();
}
}
现在不需要通过js重定向
在show-values.php文件中添加以下代码
$get_data = $_GET['data'];
if ( !empty($get_data)) {
var_dump($get_data);
echo "Name: " . $get_data["your-name"] . "<br>"; // Change "your-name"
}
但是,另一种方法是创建会话变量。这里的另一个答案基本上是正确的,它只是假设您知道wordpress是如何工作的。有一个名为functions.php的文件,您通常希望在其中添加任何php代码。如何与它交互是一个由两部分组成的事情,首先您声明一个类似于normal的函数:
function what_I_wanna_do {
// stuff
}
然后声明调用函数的触发器:
add_action( 'wpcf7_before_send_mail', 'what_I_wanna_do' );
在这种情况下,触发联系人表单插件允许您钩住它,这样您就可以在插件核心功能出现之前触发一些东西。基本上这句话是说,在做联系人表单之前,运行我想做的函数。把所有你想做的事情都放在我想做的事情上,然后在最后退出\按你的意愿重定向。您可以在functions.php中声明所有这些内容,或者制作自己的插件,以便更容易地在code\update WP中输入和输出。问题是,当在浏览器端重定向请求时,您基本上是在启动一个全新的请求,该请求将成为GET请求。您可以尝试以下几点: 作为GET参数传输数据。最简单,但不是你想要的。 在第一次提交表单后,使用Javascript再次提交表单,但这次提交到所需的URL。 提交后保存数据,重定向后在正确页面上检索数据。基本上就是你用session试过的,但你说它不起作用。您是否使用会话启动?而且,只有当两个页面都是同一网页的一部分时,它才起作用。您还可以尝试将该数据存储在文件/数据库/其他地方,并可能传递某种id作为GET参数,以便在重定向后查找该数据。
请将您的代码附加到此处。我仅有的代码在结果页中:$\u POST是一个数组,请使用var\u dump$\u POST或print\u r$\u POST打印出$\u POST。回显名称:$_POST[user]还可以。谢谢Mahfuzul,但该数组包含0个元素,因此无法传递POST值…更新了我的Ans,请检查。我忘了提及,它是同一个域和服务器。只是wordpress核心文件夹之外的一个额外文件夹。当你说重定向时,你的意思是你试图通过WP重定向传递post的VAR吗?ie FORM>Redirect>final destination?我正在尝试通过一个在提交后重定向的插件。这就是为什么我尝试了这个会话,因为我确信它不会保存POST值。这是你的问题,GET参数在重定向时似乎会被维护,只保存当前的URI数据,但POST数据不会被传递,除非你使用它们的代码,或者如果它是通过另一个插件的表单提交的,那么它就不会被传递。也就是说,将你想要发生的事情注入到其他插件流中应该很容易,因为wp是如何工作的,而不是试图链接重定向。很抱歉,我对这个问题的知识非常有限,我不理解你所说的丁克代码或编写自定义处理程序是什么意思。php页面上唯一的目标是通过POST或会话只显示值,而不显示其他内容。您指的是哪种自定义处理程序?再次为这个愚蠢的问题感到抱歉..代码将值提取到vars中,但是我如何在另一端回显它呢?我是否转换了那些vars intro$_会话并在另一端响应会话?为了更好地理解我所做的事情,我更新了主要帖子。
add_action( 'wpcf7_before_send_mail', 'what_I_wanna_do' );