将 PHP 文件添加到 wordpress - Header() 已发送

Posted

技术标签:

【中文标题】将 PHP 文件添加到 wordpress - Header() 已发送【英文标题】:Adding PHP file to wordpress - Header() already sent 【发布时间】:2012-07-06 16:37:56 【问题描述】:

几天前,我正在寻找在 wordpress 网站上使用我的自定义 php 的方法,我在这里找到了答案:How to add a php page to Wordpress。 尝试了几个示例,每个示例都运行良好。但后来我想更进一步,在像这样添加的 wordpress 页面中使用 PHP 图像处理。它适用于普通 php 网站(仅使用此代码),但是当我尝试在 worpress 中使用它时出现错误:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\wordpress\wp-content\themes\twentyeleven\header.php:13) in C:\xampp\htdocs\wordpress\wp-content\themes\twentyeleven\mynewsite.php on line 26

我尝试使用的代码是:

<?php
$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromjpeg('image2.jpg');

imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //putting one image on top of other

header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
?>

我知道问题是我想在这里发送标头,但我不知道如何解决它。 我尝试将此标题移动到文件顶部,但整个 wopress 网站无法加载。

header('Content-Type: image/png');
get_header(); //<-- part of wordpress template, cant get rid of it, cuz it ruins whole site look.

所以看起来像 get_header();在某种程度上是“问题”。 尝试使用 ob_start()、flush、clean 等,但随后我得到了我想要的图像,而无需加载 worpress 站点。我用完了所有选项,但没有一个能解决我的问题。

我的问题是:如何发送此标头以使其正常工作,因为没有它我会看到一些奇怪的符号而不是 png 图像(就像我会用记事本打开 png 图像)

任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

好的,找到了解决方案。发布答案,因为它可能在未来对其他人有用。

所以我将使用简单的词,这让我明白这一点。header('Content-Type: image/png'); 使整个网站被“视为图像”。因此,当我什至找到将标题放入 WordPress 文件的位置时,它仍然没有显示任何结果。要解决这个问题,只需创建另一个名为 image.php 的文件并将 PHP GD 代码放在那里。

$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromjpeg('image2.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //putting one image on top of other
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);

当然在&lt;?php ?&gt; 标签和WordPress 页面中,您要显示它的地方使用&lt;img src = "image.php"&gt;。这将消除标题的所有错误,并且还将显示此 PHP 代码已创建的图像。

【讨论】:

【参考方案2】:

当我在结束 php 标记“?>”之后有一个空格/换行符时遇到了这个问题,我从所有文件中删除了它,它对我有用。很奇怪,但它起作用了。

【讨论】:

不幸的是,我的情况并非如此。好吧,我的文件中没有空格/换行符,但是不可能搜索所有 wordpress 文件。

以上是关于将 PHP 文件添加到 wordpress - Header() 已发送的主要内容,如果未能解决你的问题,请参考以下文章

PHP 将额外字段添加到Wordpress用户配置文件

将 PHP 页面添加到 Wordpress 模板

PHP Wordpress - 将CSS文件添加到样式Visual Editor中

Wordpress / WooCommerce wp_localize_script 将 php 变量日期添加到 javascript

将js文件和css文件添加到wordpress

将 ACF 字段添加到搜索结果页面 WordPress