Проверить, является ли категория родительской по её ID

6 мар. 2011 г., 02:49:12
Просмотры: 19.5K
Голосов: 2

Вопрос простой (я и ответа не знаю ;)
Мне нужно проверить, имеет ли категория дочерние элементы (является родительской) по её cat-id с помощью функции.
Например:
function check_category ($catid){<br/>............<br/>...//true если является родительской, false если нет<br/>return $result;<br/>}
Примечание: Я могу передавать только cat-id в функцию, потому что мне нужно использовать её в functions.php
Заранее спасибо...

0
Все ответы на вопрос 2
6

Вы можете сделать что-то подобное:

function category_has_parent($catid){
    $category = get_category($catid);
    if ($category->category_parent > 0){
        return true;
    }
    return false;
}

И использовать это следующим образом:

if (category_has_parent('22')){
   //true — есть родительская категория
}else{
   //false — у этой категории нет родителя
}

Обновление:

Чтобы проверить обратную ситуацию (есть ли у категории дочерние элементы), можно использовать get_categories

$children = get_categories(array('child_of' => id,'hide_empty' => 0));
if (count($children) > 1){
    //есть дочерние элементы
}else{
    //нет дочерних элементов
}
6 мар. 2011 г. 09:50:00
Комментарии

Первый фрагмент кода можно упростить до return $category->category_parent.

Rarst Rarst
6 мар. 2011 г. 21:58:21

@Bainternet, извините, но я задал вопрос некорректно. Я хотел узнать, является ли эта категория ($catid) конечной? То есть, если у категории нет дочерних элементов, то она конечная... Заранее спасибо...

Alper Alper
6 мар. 2011 г. 23:06:28

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

Bainternet Bainternet
6 мар. 2011 г. 23:33:01

@Bainternet, да, и я решил свою проблему с помощью: $catlist = wp_list_categories('echo=0&orderby=id&hide_empty=0&title_li=&child_of='.$categoryid); if (($catlist)!='<li>Нет категорий</li>')

Alper Alper
7 мар. 2011 г. 02:42:11

@Alper, проверь ответ снова, я добавил гораздо более элегантный способ сделать это.

Bainternet Bainternet
7 мар. 2011 г. 03:01:21

@Bainternet, ух ты.. это идеально (и очень умная идея), большое спасибо...

Alper Alper
7 мар. 2011 г. 04:41:08
Показать остальные 1 комментариев
2

Ознакомьтесь с Codex: http://codex.wordpress.org/Function_Reference/get_category_parents

// возвращает true или false    
function check_category( $cat_id ){
    $parent = '';
    $parent = get_category_parents( $cat_id );
    return empty($parent);
}
6 мар. 2011 г. 12:02:25
Комментарии

Я не думаю, что это сработает, по механике работы get_category_parents() её вывод всегда будет включать как минимум саму категорию.

Rarst Rarst
6 мар. 2011 г. 22:00:30

Извините, но я задал вопрос некорректно. Я хочу узнать, является ли эта категория ($catid) конечной? То есть, если у категории нет дочерних элементов, тогда она считается конечной... Заранее спасибо...

Alper Alper
6 мар. 2011 г. 23:06:46