无法在我的插件中使用PHP Header()

时间:2017-06-28 作者:Talk Nerdy To Me

我有一个客户端网站,它有一个自定义开发的插件,当数据更新时(都在Wordpress admin后端),它会使用PHP头(\'Location:\')函数切换到不同的URL。我最初是在一个旧主题的环境中开发的,最终我放弃了旧主题,换成了一个新的更好的主题,但现在PHP抛出了一个错误,说:

PHP Warning: Cannot modify header information - headers already sent by (output started at /wp-admin/includes/template.php:2018) in /wp-content/plugins/*my-plugin-name*/save-data.php on line 47
这就是我的header()函数在插件中的位置。

起初我确信这是一个插件冲突,但后来我意识到这是针对215主题,然后是我尝试的任何其他主题,而不是我开发插件时的活动主题。

1 个回复
SO网友:Rick Hellewell

您会看到该错误,因为有东西在header location命令之前发送输出(甚至空格字符)。错误消息告诉您输出的来源。要修复,您必须编辑该文件-编辑核心文件不是明智的选择,因为下一次更新将覆盖您的更改。

假设您的插件需要重定向,那么您应该使用wp_redirect() 功能(请参见此处https://developer.wordpress.org/reference/functions/wp_redirect/ ).

记住放一个exit; 在wp\\u redirect()之后,以确保不执行wp\\u redirect之后的任何代码-正如函数的文档所解释的那样。

结束

相关推荐

Plugins_url()错误地返回wp-Include目录

我怀疑它有问题plugins_url() 但我看到的是一些奇怪的行为。我在激活的插件中有以下内容function include_masonry() { wp_enqueue_script( \'masonry\', plugins_url(\'js/masonry.min.js\', __FILE__), array(), \'3.2.1\', true ); wp_enqueue_script( \'my_init_script\', plugins_url(\'js/my_i