所以我得到了可怕的
尝试重定向到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>';
}
}