WordPress 使用 wp_redirect 函數出現 Warning: Cannot modify header information – headers already sent

最近更新主題的時候,使用瞭 wp_redirect() 函數來做一個頁面跳轉,沒想到出現瞭“Warning: Cannot modify header information – headers already sent”的錯誤提示:

2015-10-29_193459_wpdaxue_com

搜索瞭下,php中使用重定向跳轉時,“Warning: Cannot modify header information – headers already sent by (output started at…”是常見的錯誤提醒,出現該錯誤的原因是跳轉函數前有包括回車、空格、換行的輸出,解決方法是使用ob_start()函數打開緩沖區,使用跳轉前的輸入進入緩沖區而不會立即輸出,避免這個錯誤提醒。

如果是 WordPress 使用 wp_redirect() 函數導致的這個問題,在當前主題的 functions.php 文件中添加以下函數即可:

1
2
3
4
5
6
7
8
/**
* 解決 wp_redirect()導致的 Warning: Cannot modify header information 問題
* https://www.wpdaxue.com/wp_redirect-Cannot-modify-header-information.html
*/
function cmp_do_output_buffer() {
    ob_start();
}
add_action('init', 'cmp_do_output_buffer');

/**
* 解決 wp_redirect()導致的 Warning: Cannot modify header information 問題
* https://www.wpdaxue.com/wp_redirect-Cannot-modify-header-information.html
*/
function cmp_do_output_buffer() {
ob_start();
}
add_action(‘init’, ‘cmp_do_output_buffer’);

如果大傢還有其他解決辦法,歡迎和我們一起分享。

參考資料:

http://www.boke8.net/wordpress-cannot-modify-header-information.html

http://stackoverflow.com/questions/7381661/cannot-modify-header-information-headers-already-sent-by-wordpress-issue#answer-7461813

發佈留言