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

Есть такая вот задачка:

есть пост который относиться к трем категориям сразу – Кат1 , Кот2 , Кит3 (эти категории являются субкатегориями разделов. При добавлении постов ставиться галочка только на дочерние категории, а на родительский раздел галочка не ставиться)

Структура разделов и категорий такова

Раздел1
  -- Кат1
  -- Кат2
  -- Кат3
.............

Разел2
  -- Кот1
  -- Кот2
  -- Кот3
.............

Раздел3
.............
  -- Кит1
  -- Кит2
  -- Кит3

пользуясь функцией <?php the_category(‘, ‘) ?> категории выводяться хаотично то Кат1 , Кот2 , Кит3 ………. то Кат1 , Кит3 , Кот2….. Кит3 , Кат1 , Кот2 …. итд

как мне самому сделать так чтоб эти категории выводились в том порядке или же так как я хочу???…….

[quote]Ну например

1) что бы во всех постах выводился только такой порядок : Кат1 , Кит3 , Кот2.

или же

2) Выводить поотдельности : пост относиться к -> Тип – Кат1 , Параметр – Кит3 , Размер – Кот2[/quote]

а можно ли как то данные функции the_category(‘, ‘) превратить в массив а из него уже выводить поотдельности категории так как я захочу?

может какой нибудь фильтр , хук поможет???

add_filter(‘the_category’, ‘your_function’);

как быть?? что делать???

Плагин mycategoryorder не помогает?

Плагин mycategoryorder не помогает?

нет он имеет дело с категориями для вывода в сайдбаре….. а я имею в виду под постом….

[quote]<div class="clearboth"></div> <br />
<!–read more–>
<div style="text-align: justify;"> <?php the_content(); ?></div>

<!–Post Meta–>
<div class="post-bottom">
<div class="cat"><span><?php the_category(‘, ‘) ?></span></div>

<div class="clearfix"></div>
</div>[/quote]
этот <?php the_category(‘, ‘) ?> я так понял выводит названия категорий по алфавиту …. а нужно чтоб выводил по желанию…. по строго указанному типу!!!….

Ю.Б. очень нужна твоя помощь…… как тут мне быть?

Скорее всего, хакать придется. Бегло глянул, похоже, что в category-template.php в функции get_the_category нужно usort($categories, ‘_usort_terms_by_name’); поменять на _usort_term_by_order и добавить свою функцию по образу и подобию _usort_terms_by_name, только использовать не name, а order. Ну и MyCategoryOrder тоже задействовать, он эти самые ордеры проставляет.

Извини, глубже копать не могу, еще не поборол фирмаварь радиоэзернета – глупый пингвин ругается на флешивую файловую систему.

это как-то надо решить…… я тут думаю о массивах..

Ю.Б., есть идея но нужна твоя помощь …

я в лупе пишу следующее

$categories = get_the_category($post_id);
  print_r ($categories);

получаю следующее:

[quote]Array ( [0] => stdClass Object ( [term_id] => 23 [name] =>Кат1 [slug] => baz [term_group] => 0 [term_order] => 0 [term_taxonomy_id] => 23 [taxonomy] => category [description] => [parent] => 69 [count] => 1 [object_id] => 66 [cat_ID] => 23 [category_count] => 1 [category_description] => [cat_name] => Кат1 [category_nicename] => baz [category_parent] => 69 ) [1] => stdClass Object ( [term_id] => 185 [name] => Кат2 [slug] => ba-bpol-2 [term_group] => 0 [term_order] => 0 [term_taxonomy_id] => 185 [taxonomy] => category [description] => [parent] => 182 [count] => 1 [object_id] => 66 [cat_ID] => 185 [category_count] => 1 [category_description] => [cat_name] => Кат2 [category_nicename] => ba-bpol-2 [category_parent] => 182 ) [2] => stdClass Object ( [term_id] => 152 [name] => Кат3[slug] => xa-fpol-16 [term_group] => 0 [term_order] => 0 [term_taxonomy_id] => 152 [taxonomy] => category [description] => [parent] => 135 [count] => 1 [object_id] => 66 [cat_ID] => 152 [category_count] => 1 [category_description] => [cat_name] => Кат3 [category_nicename] => xa-fpol-16 [category_parent] => 135 ) )[/quote]
где 69, 135, 182 — это айпи родительский категорий.

Решение такое… если можно было бы взять в отдельности или управлять этими данными массива

[quote][0] => stdClass Object ( [term_id] => 23 [name] =>Кат1 [slug] => baz [term_group] => 0 [term_order] => 0 [term_taxonomy_id] => 23 [taxonomy] => category [description] => [parent] => 69 [count] => 1 [object_id] => 66 [cat_ID] => 23 [category_count] => 1 [category_description] => [cat_name] => Кат1 [category_nicename] => baz [category_parent] => 69 ) [/quote]
[quote][1] => stdClass Object ( [term_id] => 185 [name] => Кат2 [slug] => ba-bpol-2 [term_group] => 0 [term_order] => 0 [term_taxonomy_id] => 185 [taxonomy] => category [description] => [parent] => 182 [count] => 1 [object_id] => 66 [cat_ID] => 185 [category_count] => 1 [category_description] => [cat_name] => Кат2 [category_nicename] => ba-bpol-2 [category_parent] => 182 )[/quote]
[quote] [2] => stdClass Object ( [term_id] => 152 [name] => Кат3[slug] => xa-fpol-16 [term_group] => 0 [term_order] => 0 [term_taxonomy_id] => 152 [taxonomy] => category [description] => [parent] => 135 [count] => 1 [object_id] => 66 [cat_ID] => 152 [category_count] => 1 [category_description] => [cat_name] => Кат3 [category_nicename] => xa-fpol-16 [category_parent] => 135 ) [/quote]
то можно было бы поставить их так чтобы всегда первая родительская была бы 69 вторая 135 и третья 135….

как управлять ими если в руках у нас объекты???

$categories[0]->name; $categories[0]->category_parent; ... итд

осталось совсем ничего… но вот что-то дальше у меня тормозят идеи…….. Ю.Б., дальше что можно сделать???

Напиши свой sort. Не знаю. Я окончательно убил железку, а потому думать не могу совсем.

благодаря подсказке Ю.Б. решилась эта проблема простым способом:
составив новую функцию

function _usort_terms_by_parent($a, $b) {
	if ( $a->parent > $b->parent )
		return 1;
	elseif ( $a->parent < $b->parent )
		return -1;
	else
		return 0;
}

и заменив сортировку

if ( !empty($categories) )
		usort($categories, '_usort_terms_by_parent');
	else

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

Anonymous
Отправить
Ответ на: