'wp_redirect' 不起作用
'wp_redirect' 不起作用
有一个HTML表单输入。以下是代码:
...
但重定向不起作用。安装调试插件重定向到wp,如图所示。
https://i.stack.imgur.com/Im4eE.png
PS:
它也不起作用。
问题的原因:代码中没有正确的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_dump
和echo
函数,以及感谢之前评论的用户,否则自己可能无法找到这个问题。
问题原因:在调用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/