Не работает карта сайта на WordPress

Не знаю, какое обновление вызывало проблему, но сегодня Яндекс не смог получить доступ к моей карте сайта, хотя раньше всё работало нормально. Пытаясь открыть sitemap.xml вручную, я увидел ошибку примерно следующего содержания:


This page contains the following errors:
error on line 1 at column 8:
XML declaration allowed only at the start of the documentBelow is a rendering of the page up to the first error.

У этой проблемы есть два простых решения:
1) Проверить файлы functions.php, options.php и wp-config.php на отсутствие пустых строк в конце файла — не помогло;
2) Удалить закрытие php (т.е. символы ?>) из системных файлов, типа functions.php — помогло!

Если же оба варианта вам не помогли, то я нашёл на stackoverflow ещё один способ:

Сначала вы создаете php-файл (whitespacefix.php) в корневом каталоге своего WordPress-сайта. У него должно быть следующее содержимое:

<?php
function ___wejns_wp_whitespace_fix($input) {
$allowed = false;
$found = false;
foreach (headers_list() as $header) {
if (preg_match("/^content-type:\\s+(text\\/|application\\/((xhtml|atom|rss)\\+xml|xml))/i", $header)) {
$allowed = true;
}
if (preg_match("/^content-type:\\s+/i", $header)) {
$found = true;
}
}
if ($allowed || !$found) {
return preg_replace("/\\A\\s*/m", "", $input);
} else {
return $input;
}
}
ob_start("___wejns_wp_whitespace_fix");
?>

Нейросеть подсказывает, что этот код создает функцию, которая удаляет лишние пробелы и переносы строк из контента, если заголовок «Content-Type» указывает на текстовый или XML-контент.

Соответственно, после создания файла вам надо подключить его в wp-config или в functions.php. Для этого нужно сразу после открывающего <?php добавить строку:
include('whitespacefix.php');

Если вы нашли любую ошибку, опечатку или неточность, пожалуйста, сообщите об этом в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *