WordPress → Добавляем description, keywords без плагина

Задача: добавить мета теги description и keywords в заголовок поста на WordPress, без плагинов. В description поместить краткое описание статьи, а в keywords метки (теги) если они имеются у поста.

Не буду банально останавливаться на том зачем эти теги нужны. Отмечу лишь, что по умолчанию WordPress не добавляет эти мета-теги к записи. И при редактировании записи их задать нельзя. Авторы документации ссылаются на то что теги устарели, их использование сомнительно и вообще WordPress «can’t read your mind».

Существует множество SEO плагинов для WordPress которые исправляют ситуацию и добавляют возможность задавать вручную description и keywords для каждой записи, но:

  • во-первых, нужно стремиться минимизировать количество используемых плагинов с точки зрения «зависимости» и производительности;
  • во-вторых, большинство плагинов добавляют лишь дополнительные поля в редактор. А сами значения description и keywords приходится вводить вручную.

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

Решение:

Добавьте в header.php перед вызовом wp_head() код:

<?php if (is_single() || is_page() ) : if (have_posts() ) : while (have_posts() ) : the_post(); ?>
<meta name="description" content="<?php echo cutString(get_the_excerpt(), 140); ?>" />
<meta name="keywords" content="<?php
  global $post;
  $tags = wp_get_post_tags($post->ID);
  foreach ($tags as $tag) { echo $tag->name.", "; }
?>" />
<?php endwhile; endif; elseif (is_home() ): ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php endif; ?>

Алгоритм работы прост: если это запись или страницы добавляем в description краткий анонс статьи, а в keywords теги. Функция get_the_excerpt() — получает анонс поста и обрезает лишние html теги и изображения. wp_get_post_tags() — возвращает массив тегов (меток) текущего поста.

cutString() — простенькая самописная функция которая обрезает строку по словам в пределах заданного количества символов и добавляет ‘…’ в конце. Ее необходимо поместить в funtions.php. Напоминаю, оптимальная длина title до 70 символов, а Description — до 150 символов. По некоторым данным допускается длина 60-90 символов для title, и 140-190 для description.

Реализация cutString:

function cutString($string, $maxlen) {
    $len = (mb_strlen($string) > $maxlen)? mb_strripos(mb_substr($string, 0, $maxlen), ' ') : $maxlen;
    $cutStr = mb_substr($string, 0, $len);
    return (mb_strlen($string) > $maxlen)? $cutStr.' ...' : $cutStr;
}

Related: sebastian stan personality type, alienware aw2521hf best settings for gaming, forsyth county concealed carry permit renewal, which lindt chocolate contain alcohol, urime per martese, can a hospital transfer a patient without consent, retrospective cohort study level of evidence, finviz relative strength, homestuck class personalities, wildcat capital management real estate, aries moon man scorpio moon woman, comic strip bad news quotes, office of long term living pennsylvania, apartamentos en alquiler santurce, does inspection period include weekends in florida,

  • Lion

    Искреннее спасибо! Отличный метод, лучшего и не придумать. Настоящий профи!

  • Евгений

    А как реализовать вывод description, keywords для архива/рубрик без плагина?nn1

  • Супер! Как раз то, что нужно, все заработало, спасибочки!!!

  • AlexMurr

    Доброго времени суток, а если нет меток то что он возвращать будет ? можно в таком случае пользоваться этим?

  • Шикарно! спасибо!

  • Alma Z

    Как задачть description для главной страницы, контактов?