Как отключить индексацию пустых записей, страниц или кастомных постов

Итак, суть проблемы — на сайте создано или импортировано большое количество пустых постов без контента. Возможно, ошибка, возможно, посты созданы автоматически и не успели внести контент. Важно, что есть такая проблема, и если сайт хорошо индексируется поисковиками, то такие пустые записи могут создать некоторые проблемы, ведь в индексе окажется много бесполезных страниц.

Решение проблемы — добавляем код в файл functions.php, который будет проверять, есть ли контент в записи, если контента нет, то в хедер будет добавлен код с указанием noindex:

<meta name='robots' content='noindex, follow' />

Код, который будет добавлен в файл functions.php:

add_filter('wp_robots', 'filter_robots_tag');

function filter_robots_tag($robots)
{
    global $post;

    if (empty($post->post_content)) {
        $robots['noindex'] = true;
    }

    return $robots;
}

Данная функция будет проверять наличие контента не только в записях, а так же в страницах или кастомных постах.

Данный код был проверен так же на совместимость с плагином Yoast SEO, все отработало, как надо.

В пустых постах добавлено правило:

<meta name='robots' content='noindex, follow' />

В постах с контентом такие настройки, которые установлены в Yoast SEO:

<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />

Важный момент, если в редакторе пусто, но сама страница или запись сформированы в шаблоне и должны быть проиндексированы, тогда нужно добавить какой-то контент в редактор, чтобы функция не сработала и не был добавлен тег noindex.

Создаем фильтрацию элементов с помощью библиотеки Isotope

Этот пост вытащил из многолетних черновиков, поэтому особо расписывать не буду. Просто юзайте код. Итак,…

Как добавить на свой сайт ленту Instagram с помощью плагина Smash Balloon Social Photo Feed

Задача простая — добавить на сайте в виджетах или даже на отдельной странице ленту из…

Почему the_date() не выводит дату или выводит дату только в первой записи

Бывает такая ситуация, что the_date() выводит дату только у первого поста, если остальные записи имеют…

Что означает ignore_sticky_posts?

Многие думают, что ignore_sticky_posts в соответствии с переводом означает «исключить прикрепленные посты» из цикла. Но…

Ответить