Поддержка → Проблемы и решения → 2 разные категории в записи
2 разные категории в записи
-
Здравствуйте Уважаемое сообщество.
Ни скажете как можно сделать 2 разные категории в записи.
Например любая запись отсюда
Для записи
Создаём абстрактное золотое кольцо в Фотошоп
мы имеем
рубрику — Эффекты и
сложность — лёгкая
-
davidtm
давайте рассмотрим 3 вариант, чтобы ID категорий к которым относится запись выводилась в массиве.
Для сложности есть
рубрика сложность (complication)
для рубрики сложность есть 3 подрубрики
— Легкая (the-easy)
— Средняя (average)
— Усложненная (the-complicated)
Визуально портал выгледит так
1 запись относится к 2 категориям (Эффекты и (Легкая или Средняя или Усложнённая))
Для вывода категории в левом сайдбаре использую этот участок кода<?php wp_list_categories('show_option_all=1&show_count=1&hide_empty=0&orderby=ID&order=asc&title_li=0'); ?>
Для вывода надписи категорий в записи (на рисунки они светло зеленого цвета) использую этот участок кода
<h2><?php if (!is_page()) { echo '<span>рубрика: </span> '; the_category(', '); echo ' <span>|</span> '; } ?>
Какой участок кода можно использовать чтобы чтобы ID категорий к которым относится запись выводилась в массиве? (то что Вы предлагали для вывода сложности)?
Ну например так:
$cat = get_the_category(); $category = $cat[0]; $level = $cat[1];
Немного поясню. написанный выше код, будет получать id категории в которой находится запись, в нашем случае в двух. Эти категории записываются в массив. Переменной $cat присваиваем этот массив и выдергиваем из массива по элементу, присваивая их к новым переменным.
В связке с Вашим кодом пример:
<? $cat = get_the_category(); $category = $cat[0]; $level = $cat[1]; if (!is_page()) { echo '<span>рубрика:'.$category.'</span>'; echo '<span>сложность:'.$level.'</span>'; } ?>
Но усвойте вот что:
Когда создаете категории, то они сортируются, если память мне не изменяет, по дате создания, то есть категория созданная позже(более новая) всегда в массиве будет первой стоять.
Т.е. если вы создали категорию эффекты раньше чем уровень сложность, то в массиве под индексом 0 будет категория уровень сложности, а под 1 — эффекты, и наоборот.Использовал Ваш код
ругается на строкуecho '<span>рубрика:'.$category.'</span>';
Catchable fatal error: Object of class stdClass could not be converted to string in
Я шаблон с нуля делал может что в файле functions.php по $cat = get_the_category(); нужно описать?Скажите а по стуктуре категорий как лучше сделать
Создать категорию Категории и в ней подкатегории Эффекты, Работа с фото, …
И создать категорию Сложность и в ней подкатегории Легкая, средняя, усложненная.
Сейчас у меня категория Эффекты без родителя, а сложность имеет подкатегории.Писал на память, что помнил, а вообще я забыл указать что вытаскивать из массива поэтому он и выдал ошибку
Выведет название категории:
$category = $cat[0]->cat_name;Выведет id категории:
$category = $cat[0]->term_id;Вот еще список всего того что можно вывести
cat_ID
the category id (also stored as ‘term_id’)
cat_name
the category name (also stored as ‘name’)
category_nicename
a slug generated from the category name (also stored as ‘slug’)
category_description
the category description (also stored as ‘description’)
category_parent
the category id of the current category’s parent. ‘0’ for no parents. (also stored as ‘parent’)
category_count
the number of uses of this category (also stored as ‘count’)более подробно тут
По поводу структуры категорий — это уже Вы сами делайте так как удобно Вам. В каждом проекте нужды разные, соответственно и вывод разный
Спасибо большое все работает.
Хотел начать новую тему, но модератор её закрыл,
Ни подскажете с вопросомМне для записи нужно вывести 2 категории.
Для этого в файле main.php использую следующий код
По вариантам вывода рубрик<?php $category = get_the_category(); if($category[0]){ echo '<a href="'.get_category_link($category[0]->term_id ).'">'.$category[0]->cat_name.'</a>'; } ?>
это для 1 категории и
<?php $category = get_the_category(); if($category[1]){ echo '<a href="'.get_category_link($category[1]->term_id ).'">'.$category[1]->cat_name.'</a>'; } ?>
этот код для другой категории
1 категория Рубрика (для неё есть подрубрики — эффекты, работа с текстом, работа с фото, анимация)
2 категория Сложность (для неё подрубрики — легкая, средняя, усложнённая)При выводе для записи идёт сортировка вывода подрубрик по алфавиту, а мне мужно чтоб сверху записи всегда выводились подрубрики рубрики а снизу подрубрики сложности.
сейчас для записи имеемрубрика легкая
запись 1
сложность эффектырубрика эффекты
запись 2
сложность лёгкаяВывод записи 1 идёт с ошибкой (в рубрике не должно быть легкая, средняя или усложнённая)
Если смотреть по алфавиту
1-а анимация
2-л лёгкая
3-р работа с текстом
работа с фото
4-с средняя
5-у усложнённая
6-э эффектыЧтоб сделать правильный вывод подкатегорий нужно их сортировать,
Как это можно сделать?Нет ли у Вас каких либо идей, или предложений?
Честно говоря, запутался между сложной и усложненной…
Сортировка по имени есть у wp_get_post_terms и wp_get_object_terms.
Еще можно проверить, является ли категория дочерней от конкретной другой, используя$category->parent
. Если является — печатать.Участок кода не дадите?
Если я правильно понял…
$categories = get_the_category(); $sep = ''; foreach ($categories as $category) { if ($category->category_parent == 1) echo $sep . '<a href="'.get_category_link($category->term_id ).'">'.$category->cat_name.'</a>' ; $sep = ', '; }
1 — ID родительской категории, заменить на актуальный.
Спасибо за код всё работает
upd добавил разделитель — запятую $sep, если категорий больше одной.
- Тема «2 разные категории в записи» закрыта для новых ответов.