Разная длина анонсов записей рубрики WordPress

Опубликовано 8 лет назад

Рубрики (categories) — одна из стандартных таксономий WordPress, с помощью которой можно группировать между собой тематически связанные публикации. 

Благодаря рубрикам, заметно упрощается поиск, восприятие материала посетителями сайта. Сложно представить полноценный информационный ресурс без нормального рубрикатора. В WordPress кроме всего прочего рубрики поддерживают многоуровневую структуру, что позволяет создавать сложные иерархии и более точно структурировать контент сайта.

Рубрики в WordPress доступны по умолчанию и используются практически на всех сайтах. Причём часто рубрики — единственная используемая на сайте таксономия. В связи с чем, бывает необходимость для разных рубрик делать разный вывод контента. В WordPress такие вещи очень легко реализуются с помощью соответствующих файлов-шаблонов архивов рубрик: category-{ID}.php и category-{slug}.php. Например, для изменения шаблона архива записей рубрики «Новости» с ID = 1 можно создать шаблон category-1.php или category-news.php (для slug = news) и внести в нём все необходимые изменения.

Задача может немного усложниться когда необходимо, например, сделать разную длину анонса записи в зависимости от присвоенной ей рубрики. 

Напомню, что длина анонса записей в WordPress регулируется с помощью фильтра excerpt_length. К примеру, чтобы увеличить дефолтные 55 слов до 64-х, в файл functions.php необходимо добавить следующий код.

function custom_excerpt_length() {
	return 64;
}
add_filter('excerpt_length', 'custom_excerpt_length');

Немного его модернизировав, можно задать длину анонса для любой из рубрик. Например, для записей из рубрики с ID = 1 будут выводиться анонсы из 64-х слов, из рубрики с ID = 2 — 128, а из остальных — дефолтные 55. Причём это будет работать во всех стандартных циклах сайта.

add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($length) {
	if(in_category(1)) {
		return 64;
	} elseif (in_category(2)) {
		return 128;
	} else {
		return 55;
	}
}

Разумеется, можно пойти дальше и кастомизировать не только длину анонса, но и другие атрибуты записей. Причем, условия могут касаться не только присвоенных рубрик, а быть самыми разными.

Иван Данилин
Автор Иван Данилин

Фулстек веб‑разработчик, специализируюсь на платформе WordPress

Подробнее
Комментарии
  1. Добавил
    function custom_excerpt_length() {
    return 64;
    }
    add_filter(‘excerpt_length’, ‘custom_excerpt_length’);

    Но ничего не поменялось. Использую Divi
    • В Divi это делается немного иначе, на сайте разработчика есть подробная инструкция:
      https://www.elegantthemes.com/blog/divi-resources/changing-the-length-of-your-divi-blog-post-excerpts
Добавить комментарий