Порой удивляюсь дубовости движка WordPress. Сегодня внезапно выяснил, что отредактировать файл robots.txt напрямую нельзя. И никакой утилиты внутри WordPress для редактирования содержания этого файла не предусмотрено. Даже нет описаний функций php, которые могут изменить содержание файла. Но выход был найден.
Файл robots.txt в WordPress — это виртуальный файл. Его не существует на хостинге, он создаётся из базы данных при вызове со страницы. Не знаю чем обусловлен такой выбор разработчиков WordPress, но жизнь оно осложнили всем.
Установка фильтра — это единственный способ изменения robots.txt, который нашёл. Разберём на примере.
На каждом сайте крайне желательно иметь в robots.txt директиву Host:
Host: https://www.alexgur.ru
(вместо url домена этого сайта надо подставить свой). Чтобы добавить эту строку в конец robots.txt, необходимо зайти в функцию текущей темы сайта (скорее всего этот файл находится по пути: /wp-content/themes/текущая_тема/functions.php) и после первой строки написать:
add_filter(‘robots_txt’, ‘addHostToRobotsTxt’);
function addHostToRobotsTxt($robotext) {
return $robotext . ‘Host: https://www.alexgur.ru’;
}
Затем необходимо проверить правильность, перейдя по ссылке: https://www.alexgur.ru/robots.txt . Директива Host должна быть на отдельной строке, иначе поисковые роботы не прочитают её. В случае неудачи можно добавить перенос строки самостоятельно. Тогда содержание функции будет выглядеть так:
return $robotext . «n» . ‘Host: https://www.alexgur.ru’ . «n»;
Проблемы с robots.txt в WordPress
Описанные манипуляции с robots.txt придётся делать после каждого обновления темы. Потому что все изменения в файле functions.php затрутся.
Удивительно, почему в WordPress нет встроенного редактора файла robots.txt…