当我尝试登录时,我正在创建的插件出现‘Headers Always Sent’错误

时间:2012-03-03 作者:MeltingDog

我正在尝试创建我的第一个插件。到目前为止,它实际上工作正常,但有一个错误:

当我尝试登录到wp admin时,会收到一条“Headers ready Sent”PHP消息。

如果我从wpcontent/plugins目录中删除插件文件,像往常一样登录,然后替换插件文件,它工作得很好——这似乎只是在登录和注销时发生的。

我的(缩写)代码是:

<?php
/*
Plugin Name: Product Manager
Plugin URI: http://www.tech-knowledge.com.au
Description: Add, edit and remove products
Version: 1.0
Author: Me
Author URI: http://www.tech-knowledge.com.au
License: Restricted
*/

if ( is_admin() ){
/* Call the html code */
add_action(\'admin_menu\', \'prodmanager_admin_menu\');

function prodmanager_admin_menu() {
add_options_page(\'Product Manager\', \'Product Manager\', \'administrator\',
\'product-manager\', \'prodmanager_html_page\');
}
}

function prodmanager_html_page() {
?>

<div>

<h2>Product Manager</h2>
<!--usual HTML and PHP Code--> 
</div>
?>
如果你想看这一切,请告诉我。

任何建议都将非常非常感谢!

谢谢

2 个回复
SO网友:Jared

欢迎使用WPSE。

首先,您应该在操作的回调内执行条件逻辑,例如:

add_action( \'init\', \'somefn\' );
function somefn() {
    if( is_admin() ) {
        // do something
    }
}
第二,你正在admin_menu 它只在后端运行,所以is_admin() 可以删除检查。

/* Call the html code */
add_action( \'admin_menu\', \'prodmanager_admin_menu\' );

function prodmanager_admin_menu() {
    add_options_page( \'Product Manager\', \'Product Manager\', \'administrator\',
\'product-manager\', \'prodmanager_html_page\' );
}

function prodmanager_html_page() {
?>

<div>
<h2>Product Manager</h2>
<!--usual HTML and PHP Code--> 
</div>

<?php }
正如Brian所说,您有一个不需要的结束PHP标记,并且您没有用}, 我将其添加到上面的代码块中。我想这会很好地解决你的问题!

SO网友:Brian Fegter

您的语法错误。您有一个结束PHP标记,其中脚本末尾没有开始PHP标记。这意味着您要在发送标头之前创建输出。

更改此项:

function prodmanager_html_page() {
?>

<div>

<h2>Product Manager</h2>
<!--usual HTML and PHP Code--> 
</div>
?>
对此:

function prodmanager_html_page() {
    ?>
    <div>
        <h2>Product Manager</h2>
        <!--usual HTML and PHP Code--> 
        </div>
    <?php
}
脚本末尾不需要一个结束PHP标记。这是一个很好的做法,有助于防止结束标记后出现错误的空格,这将给WP一个白色的死亡屏幕。

结束

相关推荐

在短代码中有条件地加载Facebook PHP SDK

从3.3开始,我们可以在短代码函数中有条件地将脚本排队,但当我尝试使用一些PHP类(使用session_start() 在__construct() 函数)您可以猜到,它给了我headers already sent 错误问题是(这是使用Facebook PHP SDK in conjunction with the JS SDK), 我只想在帖子上存在一个短代码,并且当前帖子已经填写了2个元字段(类需要这2个值[应用ID和应用机密])的情况下实例化这个类。有没有简单的解决方案?如果是这样,我可以在下面的