所以我有一个基本的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中发送了错误。
有趣的是,如果我在WordPress中安装并激活woocommerce,该错误将消失并且可以实现预期的输出。
我对woocommerce是如何做到的很好奇。
答案 0 :(得分:0)
使用header()
函数时,您可能会在WP中遇到这类警告。改用wp_redirect()
总是更好的方法:
wp_redirect( 'https://example.com/' );
exit;
更新:
必须先调用包含头发送/修改数据的函数(例如wp_redirect
,header()
等),然后WP才能进行任何输出。也许您可以测试将您的函数和相关的挂钩放入另一个与init
或admin_init
动作挂钩相关的函数中?
确保您的插件文件中没有任何空格或字符串在PHP开头标记(<?php
)之前