Wordpress

WordPress вывод категорий – wp_list_categories() — Выводит список категорий в виде ссылок. Если перейти по ссылке, то будут показаны все посты из категории. Функция WordPress.

31.01.2020

Содержание

wp_list_categories() — вывод категорий в виде списка, WordPress

  2.1.0

wp-includes / category-template.php

Эта функция довольно часто используется в темах WordPress для создания меню. А так же с её помощью очень удобно выводить виджет со списком категорий в сайдбаре. Когда я говорю список, я имею ввиду HTML-список.

Если же вам нужно вывести рубрики к текущей записи или к записи с указанным ID — воспользуйтесь функцией the_category() или get_the_category().

А теперь рассмотрим простейший пример:

wp_list_categories('orderby=name');

Этот код выведет список категорий, отсортированных по имени. Вот как это будет выглядеть в HTML, самый обычный список со ссылками:

<li>Рубрики
<ul>
	<li>
		<a href="http://ваш_сайт.com/category/plugins" title="Просмотреть все записи в рубрике &amp;laquo;Плагины&amp;raquo;">Плагины</a> 
	</li> 
	<li>
		<a href="http://ваш_сайт.com/category/themes" title="Просмотреть все записи в рубрике &amp;laquo;Темы&amp;raquo;">Темы</a> 
	</li> 
</ul>
</li>

Теперь добавим несколько параметров

wp_list_categories('orderby=name&style=none&title_li=');

Оставляем сортировку по имени, но теперь категории будут выводиться не через <li>-список, а просто в виде ссылок (каждая с новой строки), пустой параметр title_li означает, что не нужно добавлять заголовок. Вот, как это выглядит в HTML-коде:

<a href="http://ваш_сайт.com/category/plugins" title="Просмотреть все записи в рубрике &amp;laquo;Плагины&amp;raquo;">Плагины</a><br />
<a href="http://ваш_сайт.com/category/themes" title="Просмотреть все записи в рубрике &amp;laquo;Темы&amp;raquo;">Темы</a><br />

Понятно, что чем больше вы засунете параметров в скобки, тем труднее будет во всем этом разобраться в дальнейшем, поэтому есть ещё один вариант записи.

Сначала идёт присвоение значений массиву $args, а потом он просто указывается в скобках.

$args = array(
	'orderby' => 'name',
	'style' => 'none',
	'title_li' => ''
);
 
wp_list_categories($args);

Теперь посмотрим, какие ещё могут быть параметры у функции:

show_option_all
(строка) Нужно ли добавить ссылку на главную страницу? Можно указать любое значение, например ‘На главную’ — оно и будет анкором для ссылки.

orderby
(строка) Каким образом вы хотите отсортировать категории?

  • ID — по id категории (по умолчанию)
  • name — по имени
  • slug — по ярлыку
  • count — по числу записей

order
(строка) Устанавливает порядок сортировки.

  • asc — по возрастанию (по умолчанию)
  • desc — по убыванию

style
(строка) Стиль вывода списка категорий.

  • list — в виде <li>-списка (по умолчанию)
  • none — в виде ссылок, разделенных тегом

show_count
(логическое) Указывает в скобках количество постов в каждой из рубрик.

  • 1 — да
  • 0 — нет (по умолчанию)

hide_empty
(логическое) Нужно ли исключить пустые рубрики (категории) из списка?

  • 1 — да (по умолчанию)
  • 0 — нет

use_desc_for_title
(логическое) Нужно ли использовать описание рубрик в атрибуте title для ссылок, если оно имеется. (пример: <a title=»Описание_категории» href=»…)

  • 1 — да (по умолчанию)
  • 0 — нет

child_of
(целое число) Нужно указать id рубрики, подрубрики которой вы хотите вывести.

feed
(строка) Рядом с каждой категорией вставляет ссылку на RSS-ленту. Указанное значение будет анкором этих ссылок.

feed_image
(строка) Аналогичен предыдущему параметру, но только вставляет ссылку с картинкой. В качестве значения укажите адрес картинки.

feed_type
(строка) Тип RSS-ленты.

  • atom
  • rdf
  • rss
  • rss2 (по умолчанию)

exclude
(целое число) Перечислите через запятую id категорий, которые вы хотите исключить из списка.

exclude_tree
(целое число) Исключить рубрику и все её подрубрики из списка. Работает только при выключенном

hierarchical.

include
(целое число) Укажите через запятую категории (их id), которые вы хотите включить в список.

hierarchical
(логическое) Нужно ли создавать вложенные списки для подкатегорий?

  • 1 — да (по умолчанию)
  • 0 — нет

title_li
(строка) Заголовок для списка категорий. По умолчанию __( ‘Categories’ ). То есть в русском WordPress это будет переведено в «Рубрики». Оставьте параметр пустым, чтобы избавиться от заголовка.

number
(целое число) Сколько категорий нужно отобразить в списке?

echo

(логическое) Вывод списка категорий или сохранение результата в переменную.

  • 1 — да (по умолчанию)
  • 0 — нет

depth
(целое число) Количество уровней вложенности списка.

  • 0 — неограниченно (по умолчанию)
  • -1 — без уровней вложенности, параметр hierarchical игнорируется
  • n — любое целое число

taxonomy
(строка) Выберите таксономию для вывода:

  • category — рубрики (по умолчанию)
  • taxonomy — любая зарегистрированная таксономия

current_category
(целое число) Укажите id категории из списка, для которой вы хотите добавить css-класс «current-cat». По умолчанию он добавляется к той категории, в которой в данный момент находится пользователь.

Пример:

$args = array(
	'show_option_all'    => 'Перейти на главную',
	'orderby'            => 'name',
	'order'              => 'desc',
	'style'              => 'list',
	'show_count'         => 1,
	'hide_empty'         => 0,
	'use_desc_for_title' => 1,
	'feed'               => 'RSS',
	'exclude'            => '4,3',
	'exclude_tree'       => 7,
	'hierarchical'       => 1,
	'title_li'           => 'Мои рубрики',
	'echo'               => 1,
	'depth'              => 0
);
 
wp_list_categories($args);

Вот как это будет выглядеть в итоге:

<li>Мои рубрики
<ul>
	<li>
		<a href="http://ваш_сайт.com">Перейти на главную</a>
	</li>
	<li>
		<a href="http://ваш_сайт.com/category/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/feed" title="RSS">RSS</a>) (0)
	</li> 
	<li>
		<a href="http://ваш_сайт.com/category/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/feed" title="RSS">RSS</a>) (1)
		<ul> 
			<li><a href="http://ваш_сайт.com/category/ярлык_рубрики/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/ярлык_рубрики/feed" title="RSS">RSS</a>) (0)
			</li> 
		</ul> 
	</li> 
</ul>
</li>

Миша

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

misha.blog

Как использовать категории в WordPress

Категории в WordPress или, как их часто называют, рубрики, являются одной из главных частей сайта. В этой статье вы узнаете подробнее о том, что это такое, и как правильно использовать категории.

Категории или рубрики необходимо применить правильно, так как он этого зависит успешность проекта в продвижении в поисковых системах. Главная трудность – не всегда можно легко и безболезненно изменить структуру категорий. Это как фундамент, который нужно заложить правильно в самом начале.

Что такое категории в WordPress

Категории в WordPress – это микро-темы, на которые разделяете главная тематическая ниша сайта. Благодаря категориям образуется структура сайта.

Структура помогает поисковым система и посетителям ориентироваться по проекту. От того, как правильно создана структура, зависят поведенческие факторы, юзабилити, а, соответственно, и посещаемость.

Как создать структуру сайта с помощью категорий

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

Каждая категория может иметь подкатегории. Но делать подкатегории для подкатегорий (простите за тавтологию) нельзя, так как это негативно скажется на индексации. Это называется уровень вложенности, и об этом рассказывалось здесь.

SEO оптимизация категорий

Соблюдение адекватного уровня вложенности является первым шагом в SEO оптимизации. Далее следует сделать следующее:

  • Категории должны присутствовать в составе URL. Для этого нужно правильно настроить постоянные ссылки.
  • В категориях, как и в записях и страницах, нужно сделать мета-теги. Для этого можно использовать популярные SEO плагины.
  • Делайте перелинковку из статей одной категории в статьи другой категории. Это поможет поисковикам лучше понять структуру сайта.
  • Не добавляйте одну запись в несколько разных категорий.

Вывод категорий в WordPress

Категории в WordPress можно вывести на сайте разными способами:

  • Тема сайта может выводит категорию, в которую входит запись, непосредственно в самой записи. Это удобно, так как посетитель из поисковика сразу поймёт, в какой он находится рубрике.
  • Хлебные крошки – цепочка ссылок от главной страницы до текущей записи, также может содержать название рубрики.
  • Категории можно выводить в навигационном меню. Это самый частый способ.
  • Категории также можно показать в сайтбаре, используя виджет.

wpuroki.ru

функция для вывода категорий к посту в WordPress

  0.71

wp-includes / category-template.php

Функция возвращает массив объектов (в данном случае рубрики, в которых находится пост с указанным в параметрах ID).

Короче говоря в итоге вы получаете все рубрики поста и информацию о них.

Использование

Параметры

$id
(целое) ID поста, если функция используется в цикле, этот параметр необязателен.

Возвращаемые значения

Как я уже говорил, функция возвращает массив объектов, каждый из них содержит информацию об одной из рубрик, в которой находится пост.

В скобках указаны эквивалентные варианты.

  • term_ID (cat_ID) — ID рубрики,
  • name (cat_name) — название рубрики,
  • slug (category_nicename) — ярлык категории,
  • description (category_description) — описание категории,
  • parent (category_parent) — ID родительской категории,
  • count (category_count) — количество записей (постов) в рубрике,
  • term_group — значение колонки term_group в базе данных,
  • term_taxonomy_id — ID таксономии, у рубрик он равен 1,
  • taxonomy — название таксономии, для рубрик — category,
  • object_id — ID объекта;

Примеры

Выводим список рубрик со ссылками

Переменной $post_id задайте своё значение, либо просто удалите её оттуда, если используете этот код внутри цикла.

Для получения URL рубрики используем функцию get_category_link().

$categories = get_the_category($post_id);
if($categories){
	echo '<ul>';
	foreach($categories as $category) {
		echo '<li><a href="'. get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>';
	}
	echo '</ul>';
}

Выводим список рубрик к текущему посту через запятую

Функция trim() нужна для удаления каких-либо символов по краям строки, в данном случае запятую с пробелом.

$categories = get_the_category();
if($categories){
	foreach($categories as $category) {
		$out .= '<a href="'.get_category_link($category->term_id ).'">' . $category->name . '</a>, ';
	}
	echo trim($out, ', ');
}

Указываем ссылку только на первую рубрику, в которой находится пост

К каждому объекту массива $categories можно обратиться по порядковому номеру, нумерация начинается с нуля.

$categories = get_the_category(); 
if($categories[0]){
	echo '<a href="' . get_category_link($categories[0]->term_id ) . '">'. $categories[0]->name . '</a>';
}

Миша

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

misha.blog

get_categories() — вывод рубрик в WordPress

  2.1.0

wp-includes / category.php

Удобная функция для вывода категорий в WordPress. Очень широко используется в плагинах и темах. Хотя лично я вместо неё предпочитаю get_terms().

get_categories( $args = '' )
$args
(массив|строка) параметры функции:
taxonomy
(строка) таксономия, по умолчанию — category (т.е. рубрики).

Все остальные параметры переменной $args полностью идентичны параметрам массива $args функции get_terms().

Возвращаемые значения функции

Функция возвращает массив, состоящий из объектов категорий (или других таксономий), удовлетворяющих заданным критериям. Каждый из объектов содержит информацию о категории, например ID, название, ярлык, описание и т.д. Содержимое объекта я уже рассматривал тут.

Пример 1. Выводим названия всех категорий через запятую

Напоминаю, что подробное описание всех параметров есть в документации функции get_terms().

$all_categories = get_categories('fields=names');
echo implode(', ', $all_categories); // функция implode() преобразует массив в строку

Пример 2. Выводим все категории, даже пустые, в виде ссылок через запятую

Для получения ссылки на страницу архива рубрики можно использовать функции get_category_link() или get_term_link().

$all_categories = get_categories('hide_empty=0');
$category_link_array = array();
foreach( $all_categories as $single_cat ){
	$category_link_array[] = '<a href="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</a>';
}
echo implode(',', $category_link_array);

Пример 3. Создание выпадающего списка рубрик с автоматическим переходом на них при выборе

На момент написания этой статьи подобная навигация по рубрикам стоит у меня на блоге. На самом деле делается это совсем не трудно. Буквально одна строчка JavaScript — и всё готово.

$all_categories = get_categories();
if( $all_categories ){ // выводить пустой список в случае, если рубрик нет, ни к чему
	echo '<select onchange="document.location.href=this.options[this.selectedIndex].value;"><option value="">Выберите категорию</option>';
	foreach( $all_categories as $single_cat ){
		echo '<option value="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</option>';
	}
	echo '</select>';
}

Фильтр get_categories_taxonomy

Начиная с версии WordPress 2.7.0 параметр таксономии taxonomy можно пропустить через фильтр.

function change_taxonomy_for_get_categories($taxonomy, $args){
	// $taxonomy - таксономия по умолчанию, т е либо category, либо то, что было передано в параметрах функции
	// $args - все параметры функции
	return 'post_tag'; // в качестве таксономии задали метки поста 
}
add_filter('get_categories_taxonomy', 'change_taxonomy_for_get_categories', 20, 2);

Если просто вставить этот фильтр в functions.php вашей темы, то функция get_categories() уже будет работать неправильно — вместо рубрик возвращать метки.

Используйте этот фильтр при необходимости и с осторожностью.

Миша

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

misha.blog

Шаблон вывода категорий | WordPress.org Русский

то открывается страница на которой ничего нет, кроме тайтла одного из новостей.

Очень похоже на то, что после вывода заголовка происходит какая-то ошибка php. Либо некорректно внесены изменения в шаблон, либо теме требуются какие-то доп. плагины, которые не установлены. Либо еще что-то. Стоит посмотреть лог ошибок php.

У меня шаблон верстался с нуля, с самой чистой с undersocores. Я настроил ссылки /category/news. По идее эта страница не нужна мне, зачем чтобы она дублировалась, я же могу просто сделать редирект ?

O

(@perdyllo)

Я настроил ссылки /category/news. По идее эта страница не нужна мне,

Это страница вашей категории «news». Хотите вы того или нет, но таких страниц будет ровно столько, сколько у вас будет категорий (рубрик) в которых есть хотя бы одна запись. Таково устройство WP и эти страницы никоим образом вам не мешают, а наоборот помогают в построении сайта. Показывать их или нет — это уже другой вопрос и зависит от специфики вашего сайта и ваших идей.

Но в целях избежания дублей эти страницы категорий можно и нужно закрыть от индексации всеми возможными способами — в роботс текст, закрыть тегом «noindex», исключить их из xml карты сайта. Лучше всего всё это сделать сео плагинами.

И никаких переадресаций делать не надо чтобы не ломать структуру WP

Все тоже самое касается страниц тегов (меток), страниц-архивов по дате и страниц-архивов авторов.

O

(@perdyllo)

Почти ОФТОП,

Вот что здесь http://manybtc.net есть такого оригинально-эксклюзивного, уникально-неповторимого, ради чего надо было делать это

У меня шаблон верстался с нуля, с самой чистой с undersocores

вместо того, чтобы найти готовую не менее, а то и более «продвинутую» тему из оф. каталога и далее, без всяких танцев с бубном, начать работу над созданием сайта и заполнением его контентом?

  • Ответ изменён 1 год, 9 месяцев назад пользователем O.
  • Ответ изменён 1 год, 9 месяцев назад пользователем O.
  • Ответ изменён 1 год, 9 месяцев назад пользователем O.

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

Модератор SeVlad

(@sevlad)

wp.me/3YHjQ

без всякого лишнего.

..без защиты, без тестов, без соответствия требованиям/рекомендациям и тд 🙂
Такие не желатели иметь «лишнего» часто потом кричат по форумам — от «почему что-то не работает» до «помогите, взломали». К сожалению, помочь им дистанционное часто не представляется возможным.

O

(@perdyllo)

Зачем мне захламленный сайт непонятно каким функционалом

Если вы имеете в виду использовании темы из оф. каталога — то в этих словах ваше великое заблуждение и они, помимо этих ваших слов

Дело в том, что я еще не понимаю что должно открываться на этой странице

сразу выдают в вас дилетанта в WP, которому тем более не стоит лезть в самостоятельную верстку.

Вы похожи на человека, который в аэропорту бъет себя кулаком в грудь: «Дерьмо эти ваши самолеты! Я сейчас свой быстро построю и полечу!

Или по другому — горе от ума это называется

Такие не желатели иметь «лишнего» часто потом кричат по форумам — от «почему что-то не работает»

Сей топик — живой тому пример.

(@sevlad) Так тогда сайт был не на чистом, а на купленном за 50 баксов, и шаблон не защищает от всего, например тот случай с уязвимостью.

С другой стороны, я учусь wordpress’у когда самостоятельно делаю что-то, а что не знаю — спрашиваю. Если вам лень отвечать, то будьте добры, проходите мимо)

Модератор SeVlad

(@sevlad)

wp.me/3YHjQ

Так тогда сайт был не на чистом, а на купленном за 50 баксов,

@kudanoff, так я разве говорил о том, что нужно покупать всякий хлам? Я давал ссылки на оф ресурс, а в оф каталоге всё бесплатное.

я учусь wordpress’у

Тем более! Тем более нужно пользоваться правильным компонентами. И учиться на них.
А вообще Вам начинать нужно с терминологии. Оч. облегчит взаимопонимание.

Если вам лень отвечать, то будьте добры, проходите мимо)

А воn попытки похамить отвечающим никому ещё не помогли решить свои проблемы.
Да, мне совершено не хочется выяснять ни что не так с вашей поделкой ни что и как Вы делали. А вот если бы Вы делали правильно — тогда бы было совсем другое дело.
А так я только счёл необходимым предупредить о возможных последствиях.

O

(@perdyllo)

на купленном за 50 баксов,

Здесь вы правы. Вот именно такие премиум темы (темы, а не шаблоны) и напичканы хрен знает чем. Вернее тем, о чем знает только их автор. И поэтому не надо бежать впереди паровоза, начиная знакомство с WP с платных премиум тем, или что еще хуже — с их ворованных вариантов, найденных на интернет-помойках

Я же говорю про «девственно чистые», не перегруженные ничем лишним бесплатные темы из оф. каталога WP https://ru.wordpress.org/themes/ А вы оказывается ничего и не знали о таком….

  • Ответ изменён 1 год, 9 месяцев назад пользователем O.

А воn попытки похамить отвечающим никому ещё не помогли решить свои проблемы.

Не хотел конечно, прощу прощения.

Да, мне совершено не хочется выяснять ни что не так с вашей поделкой ни что и как Вы делали. А вот если бы Вы делали правильно — тогда бы было совсем другое дело.

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

Просто еще часто бывают темы с не нужным мне функционалом, скриптами и стилями, этот мусор чем вырезать с шаблона, легче бывает самому сделать так, как мне нужно/удобно. Разве я не прав?

O

(@perdyllo)

Когда с чистой чистой темы где только самое необходимое для темы называется подделкой?

Во первых было сказано не подделка, а поделка. А это совершенно разные вещи.

просто я не совсем хорошо знаю иерархию страниц и.т.д

Вот поэтому вам и не надо заниматься самодеятельностью (поделками), а для начала разобраться со спецификой WP на одной из тем, идущих в комплекте с самим WP (из серии Twenty….) Нельзя изучать высшую математику, не зная таблицы умножения.

  • Ответ изменён 1 год, 9 месяцев назад пользователем O.
  • Ответ изменён 1 год, 9 месяцев назад пользователем O.
  • Ответ изменён 1 год, 9 месяцев назад пользователем O.
  • Ответ изменён 1 год, 9 месяцев назад пользователем O.
Модератор Denis Yanchevskiy

(@denisco)

WordPress-разработчик, wpcute.ru

Хочу спросить, если перейти по этой ссылке, то открывается страница на которой ничего нет, кроме тайтла одного из новостей.

Если там действительно возникает ошибка, то после включения WP_DEBUG в config.php, должно появиться сообщение с описанием причины ошибки.

Дело в том, что я еще не понимаю что должно открываться на этой странице

Это страница рубрики, на ней выводятся записи, привязанные к данной рубрики. В undersocores это уже реализовано, вероятно, что-то задели когда дорабатывали тему. Сравните свой код с оригиналом.

Спасибо за советы. Я уже начал читать документацию и уже понимаю что как.

ru.wordpress.org

php — Как вывести список категорий вместе с подкатегориями и постами в WP?

Stack Overflow на русском

Loading…

  1. 0
  2. +0
    • Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом
    • Справка Подробные ответы на любые возможные вопросы
    • Мета Обсудить принципы работы и политику сайта
    • О нас Узнать больше о компании Stack Overflow
    • Бизнес Узнать больше о поиске разработчиков или рекламе на сайте
  3. Войти Регистрация
  4. текущее сообщество

    • Stack Overflow на русском справка чат
    • Stack Overflow на русском Meta

ru.stackoverflow.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *