Обратите внимание на недорогие виртуальные серверы в Амстердаме (Нидерланды) от «Хостера года» 2021, 2022 и 2024 годов. Оплата в рублях картами банков РФ, СБП, электронными деньгами. Подробнее.

Автоматическое создание мета тегов description и keywords в WordPress

Опубликовано: 10 июня 2018 / Обновлено: 18 июня 2018
Раздел(ы): WordPress
Просмотры: 16290
Комментарии: 8

Этой статьёй я хочу поставить жирную точку в вопросе автоматического создания метатегов description и keywords для WordPress. Тем более, что ранее я уже писал статью на эту тему: https://moonback.ru/page/generator-meta-tega-lt-description-v-wordpress

Для чего нужен мета тег KEYWORDS

Задуман этот мета тег был для подсказки поисковым системам по каким словам выводить в результатах поиска страницу с данным метатегом. Если у вас кулинарная статья про то как сварить борщ, то содержимое мета тега keywords должно состоять из слов «кастрюля, вода, капуста, картошка, свекла, лук, морковь, соль, борщ». Наличие таких слов усиливало соответствие статьи запросу.

Но со временем SEO-шники дискредитировали этот мета тег и сейчас он либо не учитывается поисковыми системами, либо играет незначительную роль в ранжировании сайта и поэтому считается не обязательным.

Зачем нужен мета тег DESCRIPTION

Этот мета тег содержит описание страницы ее суть и краткое содержание. Если вернуться к кулинарной статье про борщ, то мета тег description может иметь следующее содержимое: «Простой пошаговый рецепт с фотографиями вкусного борща на говяжьем бульоне, который вы можете приготовить за 30 минут».

Этот мета тег использовался поисковыми системами в качестве анонса статьи в поисковой выдаче. Но со временем он так же был дискредитирован и сейчас только Яндекс считает наличие мета тега description обязательным для каждой html страницы сайта.

Так нужны ли KeyWords и Description

По большому счету нет. Поисковые системы в основной массе ранжируют сайты по содержимому страниц. Я думаю, что именно по этому WordPress «из коробки» не предлагает никаких инструментов по формированию данных мета тегов.

Но чтобы Яндекс не ругался на отсутствие Description, а вы не расстраивались по этому поводу, воспользуйтесь нижеследующими рекомендациями.

Решение предлагаемое в этой статье всего лишь попытка заставить Яндекс.Вебмастер не ругаться на отсутствие мета-тега Description. И вряд ли поможет вам продвинуться вверх в поисковой выдаче.

Автогенератор метатегов Description и Keywords

На своих сайтах на WordPress я использую следующий код, который вам нужно разместить в файле functions.php вашей темы:

/* Автогенератор метатегов Description и KeyWords */

function create_meta_desc() {
    global $post;
    $meta = wp_get_document_title();
    
if (is_category()){
    $a = category_description();
    if ( ! empty( $a ) ) {    $meta = $a; }
}
if (is_front_page()){
    $meta = get_bloginfo( 'description' );
}
if (is_single()) {
    $meta = strip_tags($post->post_content);
    $tags = get_the_tags();
    if ($tags) { foreach($tags as $tag) { $meta2 .= ' ' . $tag->name; } }
    $meta2 = ltrim( $meta2, ' ' );
    echo "\n<meta name=\"keywords\" content=\"$meta2\" />";
}
    $meta = strip_shortcodes($meta);
    $meta = preg_replace( '~\[[^\]]+\]~', '', $meta );
    $meta = wp_strip_all_tags($meta, true);
    $meta = str_replace('"','\'', $meta);
    if ( mb_strlen ( $meta ) > 160 ){ $meta = mb_substr($meta, 0, 160)."..."; }
    echo "\n<meta name=\"description\" content=\"$meta\" />\n";
    
}
add_action('wp_head', 'create_meta_desc');

Пояснения к скрипту: по-умолчанию для всех страниц в качестве тега DESCRIPTION используется заголовок — TITLE. Если страница является разделом категорий, то скрипт попробует использовать описание текущей рубрики, если оно есть (изменить можно в админке):

На главной странице используется краткое описание блога:

А вот для записей (постов) начинается самое интересное. Для формирования метатега Description берется начальная часть текста статьи (160 символов) из которых предварительно удаляются все теги и шорткоды.

Так же в записях на основе меток формируется метатег KEYWORDS.

Как проверить наличие мета-тегов Description и Keywords на странице

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

Либо нажать одновременно на клавиатуре клавиши [Ctrl] + [u]. И тогда на экране вы увидите примерно следующее:

А можно проще?

Можно упростить решения до минимума, просто добавьте следующий код в шаблон вашего сайта перед закрывающим тегом </head>, обычно в файле header.php:

<meta name="description" content="<?php echo wp_get_document_title(); ?>" />

Как сообщить Яндексу, что вы настроили DESCRIPTION

После того как вы все правильно настроили и убедились, что это работает, вам захочется оповестить об этом Яндекс. Но может случиться так, что сколько бы вы не нажимали кнопку [Проверить] у вас все равно будет сообщение об отсутствующем метатеге Description:

Причина в том, что страницы с добавленным метатегом должны попасть в базу Яндекса, то есть их должен посетить робот поисковой системы и проиндексировать.

Ускорить переобход можно прямо из панели Яндекс.Вебмастера, просто добавьте туда важные для вас страницы или те на которые ругается ПС из-за отсутствия метатега Description:

Спустя пару дней вы получите сообщение, что обновился метатег Description:

После чего стоит ожидать исчезновение сообщения об ошибке из-за отсутствующего мета-тега Description.

После добавления мета-тега description на страницы сайта сообщение об ошибках на Яндекс.Вебмастере обычно пропадают через 1-2 недели.

Обсуждение (комментарии к статье)

  1. Здравствуйте,подскажите,как сделать только для архивов дат,что-бы описание с генерировало,из 18.04.2019
    адрес сайта/2019/04/18
    Вот так 18.04.2019

  2. Аха, а если описания повторяются-скорее всего это записи групп, как прилепить счетчик +1

  3. Чёт перепробовал разные варианты,не получается выдернуть описание,просто дублирует поле title в поле description(

  4. Благодарю автора кода, наконец-то рабочий код нормального написания.
    Сразу заработало все. Еще раз спасибо.

  5. Отличное решение, спасибо!
    Добавил для меток:
    if (is_tag()){
    $b = tag_description();
    if ( ! empty( $b ) ) { $meta = $b; }
    }

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

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

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности сайта.
© Юрий Рассадников, 2011 - 2025
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 8 | 0,164 сек. | 7.6 МБ