WordPress как на ладони
rgbcode is looking for WordPress developers.

meta description без плагина — post, page, Xcategory

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

Использую код в header.php (в постах и страницах добавляет в description краткий анонс статьи. Если excerpt не задан, берет начало текста. Функция get_the_excerpt() — получает анонс поста и обрезает лишние html теги и изображения):

<?php if (is_single() || is_page() ) : if (have_posts() ) : while (have_posts() ) : the_post(); ?>
<meta name="description" content="<?php echo cutString(get_the_excerpt(), 190); ?>" />
<?php endwhile; endif; elseif (is_home() ): ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php endif; ?>

И функция в funtions.php которая обрезает строку по словам в пределах заданного количества символов (190) и в конце добавляет ‘…’:

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;
}

Заранее спасибо!

0
Александр
6.7 лет назад
  • 1

    Перед тем, как вызвать функцию обрезки строки, проверьте, с какой страницы вызывается функция. Если is_single(), то передаёте в свою функцию результат выполнения get_the_excerpt(), а если is_category(), то результат term_description().

    Непонятно, почему вывод описания у Вас находится в цикле. Оно ведь должно быть одно на странице.

    Грубо код вывода описания должен выглядеть так:

    <?php if ( is_singular() ) {
    	$description = get_the_excerpt();
    }   elseif ( is_category() ) {
    	$description - term_description();
    }   else {
    	$description = get_bloginfo('description'); 
    }
    
    ?>
    <meta name="description" content="<?php echo cutString($description, 190); ?>" />
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация