WordPress — автоматическое создание Meta Description из контента

wplogo.gifАвтоматическое создание Meta Description в WordPress. Многие пользователи движка WordPress для своих сеошных экспериментов применяют плагины вроде All in One SEO Pack или Platinum SEO Pack. Вещи, безусловно, полезные и нужные. Хотя есть несколько неприятных моментов, начиная с траблов при использовании со старыми версиями движка и заканчивая обыкновенной ленью.

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

Как раз для тех, кто не любит заморачиваться, есть простое и элегантное решение (спасибо Паше Ундервуду) — автоматическое добавление мета-тега Description на страницы с постами. Текст берется из начала поста. Первые 125 букавок. Так что все, что нужно — это при написании поста в самом первом предложении прописать тему и ключевые слова. Все!

Ну а мета-тег Keywords добавит старый добрый плагин Simple Tags. Что еще для счастья надо?

Вот код, который нужно поместить в файле functions.php шаблона:

function create_meta_desc() {
global $post;
if (!is_single()) { return; }
$meta = strip_tags($post->post_content);
$meta = strip_shortcodes($post->post_content);
$meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
$meta = substr($meta, 0, 125);
echo "<meta name='description' content='$meta' />";
}
add_action('wp_head', 'create_meta_desc');

Если у вас старый движок, то удалите из кода следующую строку:

$meta = strip_shortcodes($post->post_content);

Enjoy!

PS: кстати, на этом блоге как раз работает данная фишка. Можете сами убедиться, забравшись в исходный код страницы с постом.

UPD: 19.01.2017 Так как отношение поисковиков к метатегам значительно изменилось (ссылка), то я решил переделать этот код на следующий вариант:

function create_meta_desc() {
global $post;
if (!is_front_page()) { return; }
echo "<meta name='description' content='Тут пишете свое описание для главной страницы' />";
}
add_action('wp_head', 'create_meta_desc');

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

Не забудьте только заменить строку ‘Тут пишете свое описание для главной страницы’ на свой текст.

18.07.2012

Автор: Игорь Квентор
www.websovet.com

Если статья оказалась для вас полезной, пожалуйста, поставьте свою оценку и поделитесь в соцсетях:

1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи:

Подпишитесь на рассылку блога Вебсовет, чтобы первыми получать самые интересные материалы:

8 комментариев

  1. Степан
    http://tomakovka.dp.ua/
    07.05.2014

    Классное решение! А почему так нельзя организовать кейвордс?

  2. Игорь Квентор
    http://www.websovet.com/
    06.06.2014

    Наверное, можно. Только тогда придется и ключевики где-то в статье отдельно выписывать, чтобы скрипт их подхватил. Проще воспользоваться уже существующими метками.

  3. Олег

    28.06.2014

    А как добавить атрибут itemprop=»description» к уже готовому выводу из All in One SEO Pack ??

  4. Игорь Квентор
    http://www.websovet.com/
    13.08.2014

    Олег, это нужно спросить у авторов плагина All in One SEO Pack

  5. Djalin

    17.09.2014

    У меня показывает
    syntax error, unexpected ‘function’ (T_FUNCTION)

  6. mikhail

    23.02.2016

    — Классное решение! А почему так нельзя организовать кейвордс?
    — Наверное, можно. Только тогда придется и ключевики где-то в статье отдельно выписывать, чтобы скрипт их подхватил. Проще воспользоваться уже существующими метками.

    Вопрос: так а существующие метки (указанные для поста, при его публикации) можно выбрать запросом а-ля $meta = strip_tags($post->post_content); ? Или несколькими запросами? В цикле?
    Для того, чтоб не использовать плагины и не затормаживать ими свой движок, не добавлять массу мусора от них в код страницы. Если есть возможность запросом выбрать список меток, то логичнее и «кейвордс» так же выводить. Я в вордпрессе особо не копался, потому не знаю, возможно ли это.

    И ещё: лучше этот код встраивать в файл header.php. Иначе тег «дескрипшн» оказывается расположенным после кучи мусора от всевозможных плагинов и выводимых вордпрессом и темой строк в вашей странички.

    В самом начале указанного файла (до всего текста)
    post_content);
    $meta = strip_shortcodes($meta);
    $meta = str_replace(array(«\n», «\r», «\t»), ‘ ‘, $meta);
    $meta = substr($meta, 0, 175);
    }
    ?>

    Чуть ниже, в первых строках, на подходящем для «мета» месте:

    <?php echo "»; ?>

    Тогда «дескрипшн» у вас оказывается не чёрти где, а вверху странички.

    Ещё б разобраться, как так же изящно «кейвордс» воткнуть. Если знаете, как сделать это запросом типа $meta = strip_tags($post->post_content); — напишите, пожалуйста.

  7. mikhail

    23.02.2016

    Обрезало чего-то :(
    post_content);
    $meta = strip_shortcodes($meta);
    $meta = str_replace(array(«\n», «\r», «\t»), ‘ ‘, $meta);
    $meta = substr($meta, 0, 175);
    }
    ?>

  8. Игорь Квентор
    http://www.websovet.com/
    23.02.2016

    mikhail, увы, в пхп я не разбираюсь, использую лишь готовые решения. Можно нарулить там всякого, но как это сделать я не могу подсказать.

Оставить комментарий: