Невозможно изменить информацию заголовка - заголовки уже отправлены ... Wordpress Issue [duplicate]

32

Я встречаю эту ошибку. и я понятия не имею об этом.

Невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод началось с /home/ben 213/public_html/wp-content/themes/Bendaggers/functions.php:9) в /home/ben 213/public_html/wp-includes/pluggable.php в строке 934

моя строка в файле functions.php # 9:

<?php if(function_exists('register_sidebar'))register_sidebar();?>

, в то время как мой pluggable.php # 934

function wp_redirect($location, $status = 302) {
    global $is_IIS;

    $location = apply_filters('wp_redirect', $location, $status);
    $status = apply_filters('wp_redirect_status', $status, $location);

    if ( !$location ) // allows the wp_redirect filter to cancel a redirect
        return false;

    $location = wp_sanitize_redirect($location);

    if ( !$is_IIS && php_sapi_name() != 'cgi-fcgi' )
        status_header($status); // This causes problems on IIS and some FastCGI setups

    header("Location: $location", true, $status);}
endif;

Мне сложно понять это, так как я не программист. что кажется неправильным? любезно помогите мне пожалуйста...

  • 0
    Привет Пол, Добрый день! Извините, но не могли бы вы перевести это на английский? так как мне это сделать?
  • 0
    Что такое pluggable.php ? Почему у вас это есть? Похоже, он должен быть включен перед functions.php поскольку он пытается установить заголовки HTTP, и они должны быть установлены до того, как вы начнете выводить HTML.
Показать ещё 1 комментарий
Теги:

2 ответа

76
Лучший ответ

Ваша тема печатает вывод (текст) в браузере, но по какой-то причине WordPress перенаправляет пользователя (с wp_redirect) в сторону от этой страницы до отображения всей страницы. Вы не можете начать печать вывода, а затем перенаправить, или вы получите сообщение об ошибке. Это то, о чем говорил Пол Грим в своих комментариях.

Кен Уайт прокомментировал ссылку на сообщение с аналогичной проблемой. Я исправил это в своем собственном опыте, буферизируя вывод script.

В вашей теме functions.php файл (который включается каждый раз при загрузке ваших страниц темы), поставьте следующее:

//allow redirection, even if my theme starts to send output to the browser
add_action('init', 'do_output_buffer');
function do_output_buffer() {
        ob_start();
}

Теперь, даже если часть вашей темы начинает отправлять вход в браузер, PHP не будет отправлять этот текст до тех пор, пока страница не будет полностью загружена, что позволяет WordPress перенаправлять пользователей, если необходимо, как часть своей собственной логики.

  • 1
    Спасибо. Это решило мою проблему!
  • 1
    работает отлично!
Показать ещё 11 комментариев
18

Если вы пытаетесь перенаправить на другую страницу с вашей текущей страницы, где вы наложили условие или без каких-либо условий, используйте этот код. Например, у вас есть две страницы A.php и B.php, и в настоящее время вы находитесь на A.php, где вы хотите перейти на другую страницу B.php, нажав кнопку BOTTON.

   if(isset($_POST['save_btn']))
    {
        //write some of your code here, if necessary
        echo'<script> window.location="B.php"; </script> ';
     }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню