如何修复仅WP文件的标头输出?

时间:2016-03-23 15:02:36

标签: php wordpress redirect http-headers

所以我得到了可怕的

  

警告:无法修改标头信息 - 已发送的标头

尝试重定向到Wordpress插件上的成功页面时出现

错误消息。

问题是,我按照法典中的指示使用wp_safe_redirect,如下所示:

wp_safe_redirect(admin_url("admin.php?page=bv_before_after&msg=4"));
exit;

但令人沮丧的是,似乎有问题的文件都是Wordpress核心文件:

  

(输出从/var/www/html/wp-includes/formatting.php:4586开始)   第1228行/var/www/html/wp-includes/pluggable.php

很多教程都讨论了OB_flush(),但到目前为止我发现的每件事都有两个方面。似乎没有任何东西可以解释我的情况发生了什么,以及为什么。

我不认为这是我的插件文件中的空白问题,因为我已经删除了所有这些。我不太擅长创建WP插件,这可能是我的第一个或第二个。关于我能做什么的任何想法?

摘录: 这是从文件开头到包含第一个重定向

的函数末尾的一部分
<?php
/*
Plugin Name: BellaVou Before & After Manager
Description: Admin interface for managing Before & After photo sets.
Version: 1.0
Author: Lee Collings
*/
function registration_scripts() {
    wp_register_style('style', plugins_url('style.css', __FILE__));
    wp_enqueue_style('fontAwesome','https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');
    wp_enqueue_style('style');
}
add_action( 'admin_enqueue_scripts', 'registration_scripts' );
add_action('admin_menu','bv_before_after_menu');
function bv_before_after_menu() {
    add_menu_page( 'BV Before & Afters', 'BV Before & Afters', 'manage_options', 'bv_before_after', 'test_init' );
}
function test_init(){
    global $wpdb;
    $msg = isset($_GET['msg']) ? $_GET['msg'] : '';
    $dateFormat = 'd/M/y';
    // Edit URL param
    $editID = isset($_GET['edit']) ? $_GET['edit'] : '';
    $addItem = isset($_GET['add']) ? $_GET['add'] : '';
    // SQL call if editID present
    if ($editID != '') {
        $editItem = $wpdb->get_row("SELECT * FROM wp_before_after WHERE ID = $editID");
    }else{
        $editItem = null;
    }
    // Delete Item
    if(isset($_POST['deleteItem'])) {
        $result = $wpdb->delete( 'wp_before_after', array( 'ID' => $editID ) );
        if($result) {
            wp_safe_redirect(admin_url("admin.php?page=bv_before_after&msg=4"));
            exit;
        } else {
            $msg = array('danger','The entry could not be deleted');
            echo '<div class="notice notice-'.$msg[0].'"><p>'.$msg[1].'</p></div>';
        }
    }

0 个答案:

没有答案