繁体   English   中英

从wordpress插件重定向

[英]Redirect from within a wordpress plugin

从插件中进行重定向的正确方法是什么?

当我的插件中的代码被执行时,WordPress已经将标题打印到浏览器,所以我看不出如何从插件内部进行302/301重定向。

出于显而易见的原因,我不想进行Javascript重定向!

谢谢

add_filter('wp_redirect', 'plugin_redirect' , 10, 2);

function plugin_redirect($location, $status) {
   // Your redirect function code here
   return $location;
}

在add_filter函数中

  • 第二个参数是您的过滤器函数名称。
  • 第三个参数是您的函数优先级。
  • 第四个参数是过滤器函数接受的参数数量。

wp_redirect过滤器函数接受2个参数。

如果调用wp_redirect太晚了,你可能无法使用它(不确定你在执行的哪个地方调用它)。 假设这是一个管理插件页面中的重定向,另一种方法是在缓冲区中捕获输出,这意味着您仍然可以发送标头。 我用过的一个例子是:

# In your 'admin_menu' callback:
$page_hook = add_options_page('My Plugin', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options');
add_action( 'load-' . $page_hook , 'my_ob_start');

# Somewhere else in your plugin
function my_ob_start() {
    ob_start();
}

显然更改名称等,但这应该让你在插件页面的任何地方使用header()。 它确实有一些缺点,但默认情况下不会显示错误等,因此使用风险由您自行承担。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM