【问题标题】:Cannot modify header information - headers already sent in WordPress [duplicate]无法修改标头信息 - 标头已在 WordPress 中发送 [重复]
【发布时间】:2012-10-10 23:21:52
【问题描述】:

可能重复:
Headers already sent by PHP

当我进入 www.newswars.org 上的 wp-admin 时,我看到以下错误:

警告:无法修改标头信息 - 标头已由 /home/newswars/public_html/wp-includes 中的(输出开始于 /home/newswars/public_html/wp-content/themes/videoplus/functions.php:38)发送/option.php 在第 563 行

警告:无法修改标头信息 - 标头已由 /home/newswars/public_html/wp-includes 中的(输出开始于 /home/newswars/public_html/wp-content/themes/videoplus/functions.php:38)发送/option.php 在第 564 行

你能帮忙吗?

编辑:好的,这是导致我出现问题的原因。

$user_ej = wp_get_current_user();
if ($user_ej->roles[0] == 'contributor')
{ ?>

这是 36-38 行。由于某种原因,它变得一团糟。我仍然不太确定问题是什么。我尝试删除 ?> 但这给了我一个语法错误。我不知所措。这绝对是问题所在,因为它只有在有人登录“贡献者”时才会出现。

 <?php
// Translations can be filed in the /lang/ directory
load_theme_textdomain( 'themejunkie', TEMPLATEPATH . '/lang' );


require_once(TEMPLATEPATH . '/includes/sidebar-init.php');
require_once(TEMPLATEPATH . '/includes/custom-functions.php');
require_once(TEMPLATEPATH . '/includes/post-thumbnails.php');

require_once(TEMPLATEPATH . '/includes/theme-postmeta.php');

require_once(TEMPLATEPATH . '/includes/theme-options.php');
require_once(TEMPLATEPATH . '/includes/theme-widgets.php');

require_once(TEMPLATEPATH . '/functions/theme_functions.php'); 
require_once(TEMPLATEPATH . '/functions/admin_functions.php');
function wpr_snap($atts, $content = null) {
        extract(shortcode_atts(array(
            "snap" => 'http://s.wordpress.com/mshots/v1/',
            "url" => 'http://www.catswhocode.com',
            "alt" => 'My image',
            "w" => '400', // width
            "h" => '300' // height
        ), $atts));

    $img = '<img src="' . $snap . '' . urlencode($url) . '?w=' . $w . '&h=' . $h . '" alt="' . $alt . '"/>';
        return $img;
}




add_shortcode("snap", "wpr_snap");

$user_ej = wp_get_current_user();
if ($user_ej->roles[0] == 'contributor')
{ ?>
    <style type="text/css">
        #menu-dashboard, #toplevel_page_wpcf7, #menu-tools 
        {
            display:none;
        }
  </style>





<?php }

add_filter(  'gettext',  'change_post_to_portfolio'  );
add_filter(  'ngettext',  'change_post_to_portfolio'  );

function change_post_to_portfolio( $translated ) {
  $translated = str_ireplace(  'Posts',  'VIDEOS',  $translated );  // ireplace is PHP5 only
  return $translated;
}

// Uncomment this to test your localization, make sure to enter the right language code.
// function test_localization( $locale ) {
//  return "nl_NL";
// }
// add_filter('locale','test_localization');

// Adds categories to pages
add_action('admin_init', 'reg_tax');
function reg_tax() {
register_taxonomy_for_object_type('category', 'page');
add_post_type_support('page', 'category');
}

add_action('admin_footer', 'my_admin_footer');
function my_admin_footer()
{
    $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : NULL ;

    $message = NULL;

    if ($uri AND strpos($uri,'edit.php'))
    {
        if (strpos($uri,'post_type=page'))
        {
            $message = '1.In the ‘Video Embed Code section,’ enter the video embed code. 2.Enter the title and text in the main panel below. 3.Choose which continent and category is most fitting for your video. 4.Press ‘Publish’';
        }
        else
        {
            $message = 'ALL VIDEOS';
        }
    }

    elseif ($uri AND strpos($uri,'post-new.php'))
    {
        if (strpos($uri,'post_type=page'))
        {
            $message = 'Add pages here';
        }
        else
        {
            $message = '1.In the ‘Video Embed Code section,’ enter the video embed code. 2.Enter the title and text in the main panel below. 3.Choose which continent and category is most fitting for your video. 4.Press ‘Publish’';
        }
    }

    elseif ($uri AND strpos($uri,'post.php'))
    {
        $message = 'THREE';
    }

    if ($message)
    {
        ?><script>
            jQuery(function($)
            {
                $('<div style="margin-bottom:15px; color:#FF0000;"></div>').text('<?php echo $message; ?>').insertAfter('#wpbody-content .wrap h2:eq(0)');
            });
        </script><?php
    }
}
?>

【问题讨论】:

  • 欢迎来到 StackOverflow。请搜索以查看您之前遇到的问题是否已得到解答。如果您找不到答案,请继续提出您的问题。这个特定的问题之前已经被问过很多次了。
  • 请通读上面链接的帖子并尝试解决您的问题。如果您仍然遇到问题,请更新您的问题并尝试解决问题。
  • 啊,是的。感谢您指出这一点以及做事的方式。我已经更新了我的问题。

标签: php wordpress header


【解决方案1】:
add_shortcode("snap", "wpr_snap");
$user_ej = wp_get_current_user();
if ($user_ej->roles[0] == 'contributor')
{ ?>
  <style type="text/css">
    #menu-dashboard, #toplevel_page_wpcf7, #menu-tools 
    {
        display:none;
    }
</style>
<?php }
add_filter(  'gettext',  'change_post_to_portfolio'  );
add_filter(  'ngettext',  'change_post_to_portfolio'  );

不在函数内部。因此,一旦文件加载,它就会被调用。这意味着所有输出都会立即发送到屏幕上。这些东西应该在一个函数中,然后在正确的时间调用(就像其他位一样)。

【讨论】:

  • 那么如何在函数中获取它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2011-02-09
  • 2012-06-19
相关资源
最近更新 更多