Wordpress:无法修改标头信息 - 标头已由格式化时开始的输出发送.php第 5652 行



我正在为字典开发简单的插件。这个插件在填写新词典的表单字段后做:

  1. 获取字段的值;
  2. 激活$wpdb;
  3. 将数据插入数据库;
  4. 通过"标题位置"重定向到插件的主页。

第四步不起作用。我收到以下警告:

警告:无法修改标头信息 - 标头已由 .../public_html/wp-include/formatting.php:5652 在第 73 行的 .../public_html/wp-content/plugins/lp-dictionaries/lp-dictionaries.php 中发送。

我在绝对新的 Worpdress 上测试了我的插件,具有标准主题,没有任何其他插件。没有空行或符号和自定义函数。

如何使重定向工作?

发送标头后无法重定向。您需要在之前重定向。

这取决于您在插件中进行重定向的位置。建议使用template_redirect钩。问题是您在发送标头使用钩子调用。

function webearth_redirect() {
wp_redirect( esc_url( home_url( '/' ) ) );
exit();
}
add_action( 'template_redirect', 'webearth_redirect' );

例如,如果您在简码内,则不能在服务器端使用重定向。你必须使用Javascript。在页面底部添加:

<script>window.location.href = "http://www.YourSite.com";</script>

-> 点击模拟

<script>location.replace("https://www.YourSite.com");</script>

-> "替换"当前页面的重定向。因此,您无法返回该页面。

请使用 {window.location.href},如下所示:

echo ("<script LANGUAGE='JavaScript'>
window.alert('Succesfully Updated');
window.location.href='http://someplace.com';
</script>");

最新更新