WooCommerce如何解决已发送的HTTP标头问题?

时间:2019-06-26 10:11:33

标签: php wordpress redirect woocommerce http-headers

所以我有一个基本的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是如何做到的很好奇。

1 个答案:

答案 0 :(得分:0)

使用header()函数时,您可能会在WP中遇到这类警告。改用wp_redirect()总是更好的方法:

wp_redirect( 'https://example.com/' );
exit;

更新:

  1. 必须先调用包含头发送/修改数据的函数(例如wp_redirectheader()等),然后WP才能进行任何输出。也许您可以测试将您的函数和相关的挂钩放入另一个与initadmin_init动作挂钩相关的函数中?

  2. 确保您的插件文件中没有任何空格或字符串在PHP开头标记(<?php)之前