【发布时间】:2019-11-08 06:01:47
【问题描述】:
所以我有一个基本的 wordpress 插件,它在管理端有一个表单。表单通过 POST 收集信息并在数据库中插入一条记录并重定向到创建的对象的编辑页面。
第 1 步:从 POST 数组中获取对象字段
第 2 步:使用 $wpdb 将代码插入数据库
第3步:如果插入成功重定向到https://example.com
if( isset($_POST['submit'])){
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$result = $wpdb->insert('table', array('first_name' => $first_name, 'last_name' => $last_name), array('%s','%s'));
if($result){
$url = "https://example.com/";
header("Location: $url");
die();
}else{
echo "Error inserting record in table";
}
}
现在预期的结果是页面应该重定向到https://example.com 在数据库中成功插入对象。但是我在 PHP 中得到一个 headers already sent 错误。
有趣的是,如果我在 WordPress 中安装并激活 woocommerce,错误就会消失并达到预期的输出。
我很好奇 woocommerce 是如何做到的。
【问题讨论】:
-
您必须确保在标头/重定向之前没有输出。没有 var_dumps,没有回显,基本上,在 header 之前不应该呈现 HTML
-
我明白这一点。我认为 Woocommerce 在激活时解决了所有这些问题。我只是想知道如何在我的插件中复制相同的内容。
标签: php wordpress redirect woocommerce http-headers