WP_REDIRECT不能使用短码函数

时间:2013-10-11 作者:Joren

每当我使用wp_redirect(plugins_url(\'account/login\')); 在shortcode函数中,我得到以下错误:

Warning: Cannot modify header information - headers already sent by ...
有没有办法从那里重定向?我想我会回应一些执行重定向的Javascript,但我想知道是否会有这样的服务器端实现。

2 个回复
SO网友:brasofilo

为什么它需要是一个短代码?看起来像XY Problem.

您已经在编辑屏幕中手动插入了短代码。改为使用自定义字段,并在可以实际执行重定向的地方挂接。

enter image description here

add_action( \'template_redirect\', function(){
    global $post;
    $redirect = get_post_meta( $post->ID, \'redirect\', true );
    if( $redirect )
    {
        wp_redirect( admin_url( \'profile.php\' ) );
        exit;
    }
});

SO网友:s1lv3r

要重定向到另一个页面,需要设置http标头。要设置标题,它必须是输出到浏览器的第一件事。

当某些内容已经输出到浏览器时,您试图设置标题,这就是为什么您会收到警告,而重定向不起作用。

您需要更改实现,以便在任何内容得到输出之前触发重定向。所以你应该把它挂在init 或在输出之前发生的任何其他操作。

这也可能是由于另一个插件错误地输出了不应该输出的内容。

结束

相关推荐