WordPress — автоматическое создание Meta Description из контента
Многие пользователи движка 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');
Этот код, в отличие от предыдущего, добавляет описание только для главной страницы сайта. Согласитесь, это гораздо лучше, чем если поисковики будут самостоятельно составлять сниппет из первой статьи, которую найдут на главной.
Не забудьте только заменить строку 'Тут пишете свое описание для главной страницы' на свой текст.
Классное решение! А почему так нельзя организовать кейвордс?
Наверное, можно. Только тогда придется и ключевики где-то в статье отдельно выписывать, чтобы скрипт их подхватил. Проще воспользоваться уже существующими метками.
А как добавить атрибут itemprop=»description» к уже готовому выводу из All in One SEO Pack ??
Олег, это нужно спросить у авторов плагина All in One SEO Pack
У меня показывает
syntax error, unexpected ‘function’ (T_FUNCTION)
— Классное решение! А почему так нельзя организовать кейвордс?
— Наверное, можно. Только тогда придется и ключевики где-то в статье отдельно выписывать, чтобы скрипт их подхватил. Проще воспользоваться уже существующими метками.
Вопрос: так а существующие метки (указанные для поста, при его публикации) можно выбрать запросом а-ля $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); — напишите, пожалуйста.
Обрезало чего-то :(
post_content);
$meta = strip_shortcodes($meta);
$meta = str_replace(array(«\n», «\r», «\t»), ‘ ‘, $meta);
$meta = substr($meta, 0, 175);
}
?>
mikhail, увы, в пхп я не разбираюсь, использую лишь готовые решения. Можно нарулить там всякого, но как это сделать я не могу подсказать.
Дружище, все классно, вот только если в начале поста есть изображение или другие теги, то в мета дескрипшн отображается мусор в виде img, a href и прочей байды.
Решение интересное, годное, но в особых узких случаях.
Продолжаю поиски нужного инструмента, чтобы написать meta в 2000 постов.
Здравствуйте,подскажите,как сделать только для архивов дат,что-бы было описание,из названия даты
адрес сайта/2019/04/18
Вот так 18.04.2019
Здравствуйте, Дмитрий!
Я не понял. Уточните, пожалуйста свой вопрос. Обратите внимание, что код в комментариях не отображается.