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

时间:2009-01-30 13:23:57

标签: php redirect wordpress-plugin

我正在写一个Wordpress插件。

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

标题(“位置:...”)和wp_redirect()都没有工作 - 我得到了

警告:无法修改标头信息 - 已由

发送的标头

来自明显的原因。

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

7 个答案:

答案 0 :(得分:39)

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

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

答案 1 :(得分:3)

如果您仍然希望在使用WP add_page *功能时从插件管理页面重定向到另一个管理页面,那么在处理完您的请求后,您可以回复这样的内容:

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

这只是将基于javascript的重定向呈现为“/whatever_page.php”,从而确保WP已经发送的标题没有麻烦,正如Chris Ballance所说。

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

答案 2 :(得分:2)

对于添加了add_submenu_page(或相关函数)的链接,请使用返回的$ hook_suffix向“load- $ hook_suffix”添加操作并在那里进行重定向。这是在输出开始之前挂钩到页面加载的方式。

答案 3 :(得分:1)

我认为我的做法是错误的。

我的代码在里面的add_menu_page()里面 add_action('admin_menu',...)调用

可能在请求期间稍后调用(在页面标题创建并显示之后)。

将我的代码移出我的插件句柄,进入主要范围工作 - 它需要一些清理和修复,但重定向工作。

无论如何,谢谢你的答案。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我想你必须确保wp_redirect()在任何输出发送之前出现。

答案 6 :(得分:-1)

将其加载到template_redirect。

add_action('template_redirect', 'myplugin_template_redirect');

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