Как исправить ошибку WordPress Cannot modify header information — headers already sent by?
При попытке установить тему или после неправильного редактирования кода на WordPress часто появляются ошибки. Одна из них – «Cannot modify header information — headers already sent by», которая заменяет контент сайта в браузере. На самом деле это не какая-то эксклюзивная ошибка, она может появиться и в самодельном сайте, и на другом движке. Её может спровоцировать один неверно введённый символ, отступ или команда. Найти строку с проблемой самостоятельно весьма проблематично, но не стоит пугаться, мы вам поможем исправить ошибку.
Содержание
Значение ошибки
Чтобы понять смысл фразы, её нужно перевести на русский язык. На понятном нам языке – «Нет возможности изменить заголовки – они уже были отправлены». Это определение не даёт доступного для понимания ответа, почему появился сбой. По крайней мере оно непонятно рядовому пользователю.
Чтобы разобраться в проблеме, придётся немного углубиться в принцип загрузки страницы. Изначально браузер загружает именно заголовки, в них передаётся такая информация:
- Кодировка;
- Информация о сервере;
- Cookie;
- Оригинальный язык сайта;
- Прочая техническая информация.
Только затем браузер переходит к обработке функций и построению сайта. При повторном изменении одной из характеристик заголовка, как раз и появляется ошибка. Это означает, что мы пытается несвоевременно или неправильно внести коррективы в заголовки. Преимущественно ошибку вызывают команды PHP: header, setcookie и некоторые другие, отвечающие за работу с cookie и сессиями.
Скорее всего из-за неопытности, программист внёс какую-то команду перед той, что влияет на заголовки. Таким образом страница уже сформировала заголовки к выполнению команды. При следующей попытке передачи данных в header появляется ошибка. Простой перенос функции часто решает проблему, но нужно знать, что и куда переносить.
Установка команды до заголовка
Это одна из самых частых причин ошибки, которая свойственна неопытным программистам. Она также может появиться по банальной невнимательности. На скриншоте видно, как быть не должно.
Сейчас появится ошибка. Как же правильно сделать то же самое?
Во втором примере всё будет работать правильно. Всё из-за того, что команда вызова текста стояла перед header. Именно неправильная очерёдность записи и стала проблемой формирования заголовков. Из-за того, что заголовки загружаются в первую очередь, обработка прочей информации о странице могла прекратиться.
Важно! Запомните, всегда заголовки идут перед какими-либо функциями и командами.
На практике не всё так просто. Мы можем поставить заголовок вначале документа, но все равно ошибка продолжит появляться. Почему так происходит? Всё дело в структуре WordPress. Данная CMS загружает массу файлов во время прогрузки страницы. Некоторые из них подгружаются сразу, а другие – в третью или последнюю очередь. Добавление записи с header в файл footer.php, content.php и другие приведут к ошибке. Подобные команды нужно вводить в header.php или аналогичный файл (зависит от темы).
В записи есть лишний пробел
Обнаружить данную причину сбоя сложнее и при ней также появляется ошибка «Cannot modify header information». Сложность в том, что визуальная разница может быть практически незаметной. В PHP любой символ и даже пробел имеет свои функции, лишний или недостающий пробел «ломает» весь сайт. Коварность проблемы ещё и в том, что вы могли не добавлять пробел самостоятельно. Он мог появиться из-за изменения кодировки, копирования команд или работы с неподходящим текстовым редактором.
Исправить проблему несложно, достаточно открыть документ иным текстовым редактором и удостовериться в правильности записи. Обращайте внимание на каждую строку, в том числе с открытием PHP-кода.
На скриншоте видно, что запись начинается с пробела, а не <?PHP. Это следует исправить, удалив пробел.
Применение команды include
Довольно часто наблюдается неправильное использование include, особенно у администраторов сайтов без опыта в программировании. Задача команды – загрузить в текущий документ другой файл. При попытке подключения файла до отправки заголовков, появляется ошибка.
Способ решения – перенести команду на пару строк ниже, после завершения формирования header. О строке с ошибкой вам сообщит встроенный инспектор кода в браузер (смотрите на информацию в скобках рядом с сообщением).
Кстати, не только функция header должна задаваться вначале файла. Те же самые правила действуют и в отношении команд setcookie, session_start.
На представленном примере, ошибка допущена в строке файла, расположенном после записи output started. Достаточно пройти в нужный раздел и найти ошибку.
Переустановка проблемных файлов
Порой ошибка появляется после установки каких-либо плагинов, тем из магазина WordPress. Причина банальна, дополнения неправильно установились или загрузились не до конца. Ещё могла быть допущена ошибка в ядре файла.
Первым делом стоит удалить дополнение и установить его заново. Если это не помогло, нужно перейти на официальную страницу плагина и изучить жалобы от других пользователей. Довольно часто умельцы исправляют ошибки разработчиков. Вам останется только пройти по предоставленной инструкции. При наличии других проблем можете связаться с технической поддержкой проблемного дополнения или установить другое.
Если на вашем сайте заметили ошибку «Cannot modify header information», не торопитесь искать программиста. Обычно её удаётся исправить с помощью простой корректировки: удаления пробела, перемещения функции или переустановки дополнения.