Как автогенерировать тег meta description с обрезкой по словам?
Для прописывания мета-тега description я крайне рекомендую воспользоваться каким-нибудь SEO-плагином. Однако, если использование SEO-плагинов по каким-то причинам вас не устраивает, то их можно заменить небольшой функцией, которая сгенерирует мета-тег description из указанного числа символов записи. Функция "умная", а поэтому описание не будет обрезано посреди слова.
Добавьте в файл functions.php вашей темы следующий код:
//автогенерирование мета-тега description start function wph_add_meta_description() { global $post; if ( is_single() ) { $meta = strip_tags($post->post_content); $meta = strip_shortcodes($meta); $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta); $maxlen = 90; $len = (mb_strlen($meta) > $maxlen)? mb_strripos(mb_substr($meta, 0, $maxlen), ' ') : $maxlen; $cutStr = mb_substr($meta, 0, $len); $temp = (mb_strlen($meta) > $maxlen)? $cutStr. '...' : $cutStr; echo '<meta name="description" content="' . $temp . '" />' . "\n"; } } add_action('wp_head', 'wph_add_meta_description', 2); //автогенерирование мета-тега description end |
Где '90' это число необходимых символов. Можно оставить себе лазейку для ручного указания мета-тега description с помощью произвольного поля записи:
//автогенерирование мета-тега description start function wph_add_meta_description() { global $post; $my_meta = get_post_meta(get_the_ID(), "my_meta", true); if ( is_single() ) { if (!$my_meta) { $meta = strip_tags($post->post_content); $meta = strip_shortcodes($post->post_content); $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta); $maxlen = 90; $len = (mb_strlen($meta) > $maxlen)? mb_strripos(mb_substr($meta, 0, $maxlen), ' ') : $maxlen; $cutStr = mb_substr($meta, 0, $len); $temp = (mb_strlen($meta) > $maxlen)? $cutStr. '...' : $cutStr; echo '<meta name="description" content="' . $temp . '" />' . "\n"; } else { echo '<meta name="description" content="' . $my_meta . '" />' . "\n"; } } } add_action('wp_head', 'wph_add_meta_description', 2); //автогенерирование мета-тега description end |
Теперь если вы заполните в записи произвольное поле 'my_meta', то в мета-теге description будет выведено именно его содержимое.