如何在 wordpress 中通过 cURL PHP 提交自定义 POST 表单

How to submit custom POST form via cURL PHP in wordpress

我正在制作主题 wordpress 在本地主机中使用 childtheme。我在 footer.php:

中有一个基本形式 html
<form method="post">     
    <input name="FNAME" type="text">
    <input name="LNAME" type="text">
    <input name="EMAIL" type="email">
    <button type="submit">Subscribe</button>
</form>

现在,我想通过 cURL php 将表单提交到 api url。我知道像这样设置 cURL 的代码:

$data =  $_POST;

$curl = curl_init();

$options =array(
    CURLOPT_RETURNTRANSFER =>true,
    CURLOPT_URL => 'link_to_url',
    CURLOPT_POST => true,
    CURLOPT_CONNECTTIMEOUT => 30,
    CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($curl, $options);

$result = curl_exec($curl);
curl_close($curl);

我想在提交表单时,POST 数据将通过此 cURL 发送,但我不知道应该将此代码放在哪里以及如何处理它。我想它可能放在 function.php 中的一个函数中,但我不知道怎么写。请帮助我!

如果你想在同一个文件中执行上述代码,可以这样做:

<?php
// any other php code above
if(isset($_POST["infoForm"])) {
    $curl = curl_init();

    $data = array(
        'post_request_name_for_fName' => $_POST["FNAME"],
        'post_request_name_for_lName' => $_POST["FNAME"],
        'post_request_name_for_email' => $_POST["EMAIL"]       
     );

    $options =array(
        CURLOPT_RETURNTRANSFER =>true,
        CURLOPT_URL => 'link_to_url',
        CURLOPT_POST => true,
        CURLOPT_CONNECTTIMEOUT => 30,
        CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_POSTFIELDS => http_build_query($data)
    );
    curl_setopt_array($curl, $options);

    $result = curl_exec($curl);
    curl_close($curl);
}
// any other php code below
?>

并将 HTML 设置为:

<form method="post">     
    <input name="FNAME" type="text">
    <input name="LNAME" type="text">
    <input name="EMAIL" type="email">
    <button type="submit" name="infoForm">Subscribe</button>
</form>

下面是它背后的解释。您将提交按钮的 name 设置为 infoForm(或您想要的任何其他内容),以便 PHP 可以知道哪个表单是 posted 以及何时编辑。然后您使用 if(isset($_POST["infoForm"])) 检查表单是否被 posted,然后您执行下面的代码 post 它。

$_POST["FNAME"] 和其他变体检查在每个输入中找到的数据并将其设置为 $data 数组的值。然后,您可以将 post_request_name_for_fName 的所有值更改为您的 post 请求需要的任何值(即;如果您 post 请求需要 'name' 并且'email' 参数,根据需要更改上面的值即可)。

如果您还想转换到不同的页面,您可以创建一个新文件(即;post.php)并在没有 if(isset) 的情况下添加代码,然后设置您的 html 像这样:

<form method="post" action="post.php">     
    <input name="FNAME" type="text">
    <input name="LNAME" type="text">
    <input name="EMAIL" type="email">
    <button type="submit" name="infoForm">Subscribe</button>
</form>