'wp_redirect' 不起作用

14 浏览
0 Comments

'wp_redirect' 不起作用

有一个HTML表单输入。以下是代码:


    ...
    

但重定向不起作用。安装调试插件重定向到wp,如图所示。

https://i.stack.imgur.com/Im4eE.png

PS:


它也不起作用。

0
0 Comments

'wp_redirect' is not working的原因可能有两种:一种是因为缓冲区没有清除导致的,另一种是因为使用了错误的URL格式。

缓冲区没有清除的解决方法:

ob_clean();
$url = get_home_url() . '/login';
wp_redirect($url);
exit();

使用了错误的URL格式的解决方法:

可以使用JavaScript进行重定向。

<script>window.location='http://www.google.com'</script>

0
0 Comments

问题的原因:代码中没有正确的if条件,导致wp_redirect函数无法正常工作。另外,在wp_redirect之前输出任何字符都会导致函数失败。

解决方法:在调用wp_redirect函数之前,确保没有输出任何字符。同时,在wp_redirect之后加上exit;语句。如果debug.log文件中显示类似于[11-Aug-2016 15:30:18 UTC] PHP Warning: Cannot modify header information - headers already sent by (output started at /srv/www/my_website/htdocs/wp-content/themes/FoundationPress/custom/templates/header-home.php:65) in /srv/www/my_website/htdocs/wp-includes/pluggable.php on line 1166的错误信息,也需要进行检查。

另外,还有一位用户提到自己在重定向之前调用了var_dumpecho函数,以及感谢之前评论的用户,否则自己可能无法找到这个问题。

0
0 Comments

问题原因:在调用wp_redirect函数之前,输出缓冲区中可能已经存在输出内容,导致无法正常重定向。

解决方法:在调用wp_redirect函数之前,使用ob_start()函数开启输出缓冲区,确保没有输出内容。

代码示例:

function app_output_buffer() {
    ob_start();
} // soi_output_buffer
add_action('init', 'app_output_buffer');

或者在自定义的函数中使用以下代码作为第一行,以在'init'钩子中启动输出缓冲区:

ob_start()

在调用wp_redirect函数之后,立即添加以下代码以确保正常执行重定向:

exit();

参考链接:https://tommcfarlin.com/wp_redirect-headers-already-sent/

0