Php 如何在Wordpress中重定向到不同的管理页面?

Php 如何在Wordpress中重定向到不同的管理页面?,php,redirect,wordpress,Php,Redirect,Wordpress,我正在写一个Wordpress插件 我想执行重定向(在从POST数据等创建DB记录之后)到其他管理页面 标题(“位置:…)和wp_redirect()都不起作用-我明白了 警告:无法修改标题信息-标题已由发送 这显然是有原因的 如何在Wordpress中正确执行重定向?在重定向发生之前,您需要确保没有向http输出发送任何内容 您可以设置“window.location('newlocation');“在将输出发送到浏览器后,您仍然可以重定向。我想您只需确保wp_redirect()在发送任何输

我正在写一个Wordpress插件

我想执行重定向(在从POST数据等创建DB记录之后)到其他管理页面

标题(“位置:…)和wp_redirect()都不起作用-我明白了

警告:无法修改标题信息-标题已由发送

这显然是有原因的


如何在Wordpress中正确执行重定向?

在重定向发生之前,您需要确保没有向http输出发送任何内容


您可以设置“window.location('newlocation');“在将输出发送到浏览器后,您仍然可以重定向。

我想您只需确保wp_redirect()在发送任何输出之前到达。

我想我做得不对

我的代码在“添加”菜单中 添加操作('管理菜单',…)调用

稍后在请求过程中(在创建并显示页眉之后)可能会调用它

将我的代码从插件句柄移到主作用域是可行的——它需要一些清理和修复,但重定向是可行的


无论如何,谢谢您的回答。

将其加载到模板中

add_action('template_redirect', 'myplugin_template_redirect');

function myplugin_template_redirect() {  
   wp_redirect('http://www.example.com/', 301);
}

如果在使用WP add_page*功能时仍希望从插件管理页面重定向到另一个管理页面,则在处理请求后,您可以只回显如下内容:

<script type="text/javascript">
window.location = '/whatever_page.php';
</script>

window.location='/whatever_page.php';
这只是将一个基于javascript的重定向呈现到“/whatever_page.php”,从而确保WP已经发送的标题不会出现问题,正如Chris Ballance所说的那样


将“/which_page.php”更改为“/wp admin/admin.php?page=which_page”

在表单操作中,将“noheader=true”添加到操作URL。这将防止在重定向之前输出管理区域的标题。例如:

<form name="post" action="<?php echo admin_url('admin.php?page=your-admin-page&noheader=true'); ?>" method="post" id="post">

对于添加子菜单页面(或相关函数)的链接,使用返回的$hook\u后缀向“load-$hook\u后缀”添加操作“然后在那里重定向。这就是在输出开始之前如何钩住页面加载。

尝试设置window.location并使用javascript进行重定向。我知道,但输出来自…/wp admin/menu header.php:128,这是一个标准的wordpress文件。我可以试一下ob_start+ob_*——但这似乎有点太老套了。。。。恐怖!我只是浪费了4个小时试图摆脱这一切!为什么wordpress不建议将其添加到url中?谢谢如果可以的话,我会再投票一百次。
template\u redirect
在WordPress管理后端中不是可用的操作挂钩。这应该是最后的选择!