2013-10-02 6 views
0

В Wordpress я ищу, чтобы получить глубину подкатегорий категории.WP - Получить глубину подкатегорий категории

Предположим, у меня есть категория «grandparent», которая имеет подкатегорию «родитель», которая, в свою очередь, имеет подкатегорию «ребенок». Как мне получить целое число 2?

Я полагаю, что я могу проверить, есть ли подкатегории «grandparent», и если да, проверьте, есть ли у них подкатегории и т. Д., Пока я не нажму 0. Но это похоже на ненужную обработку.

Нет ли более элегантного способа?

+0

Какую функцию используют? –

ответ

0

Предполагая, что $ кошке быть идентификатор категории из 'прародителей':

$number_of_subcategories = count(get_categories("echo=0&cat=" . $cat)); 

Может помочь?

http://codex.wordpress.org/Function_Reference/get_categories

+0

спасибо, но это не сработает. он возвращает 1, где он должен вернуть 2 - для дедушки и бабушки, у которой есть ребенок и внук. –

+0

, и он также возвращает 1, где он должен вернуть 0 - категорию без подкатегорий –

+0

А ну, стоит того. Я основывал его на Wordpress Reference, который иногда немного быстр. Извините, я не помог. –

0

Попробуйте это:

$args = array(
       'type'      => 'post', 
       'child_of'     => 0, 
       'parent'     => 0, 
       'orderby'     => 'name', 
       'order'     => 'ASC', 
       'hide_empty'    => 1, 
       'hierarchical'    => 0, 
       'exclude'     => '', 
       'include'     => '', 
       'number'     => '', 
       'taxonomy'     => 'category', 
       'pad_counts'    => false 
       ); 
       $cats = get_categories($args); 
       foreach($cats as $cat) { 
        if($cat->parent == 0) { 
         $parent_cat = null; 
         $head = $cat->name; 
         $head_id = $cat->term_id; 
        } 
        echo "<ul><a class='parent-category' href=''>" . $head . "</a>";              
        wp_list_cats("sort_column=NAME&optioncount=0&hierarchical=1&hide_empty=0&child_of={$head_id}&show_option_none="); 
        echo "</ul>"; 
       } 

Спасибо.

+0

спасибо, но это выводит список категорий, а не возвращает число поколений подкатегорий. –

+0

, поэтому в этом случае вы можете использовать только таким образом $ number_of_subcategories = count (get_categories ("echo = 0 & cat =". $ Cat)) - 1; в отношении ответа Оуэна 'Coves' Jone –

2

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

EDIT: код здесь:

function get_depth($id = '', $depth = '', $i = 0) { 
    global $wpdb; 

    if($depth == '') { 
     if(is_page()) { 
      if($id == '') { 
       global $post; 
       $id = $post->ID; 
      } 
      $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$id."'"); 
      return get_depth($id, $depth, $i); 
     } 
     elseif(is_category()) { 
      if($id == '') { 
       global $cat; 
       $id = $cat; 
      } 
      $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$id."'"); 
      return get_depth($id, $depth, $i); 
     } 
     elseif(is_single()) { 
      if($id == '') { 
       $category = get_the_category(); 
       $id = $category[0]->cat_ID; 
      } 
      $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$id."'"); 
      return get_depth($id, $depth, $i); 
     } 
    } 
    elseif($depth == '0') { 
     return $i; 
    } 
    elseif(is_single() || is_category()) { 
     $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$depth."'"); 
     $i++; 
     return get_depth($id, $depth, $i); 
    } 
    elseif(is_page()) { 
     $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$depth."'"); 
     $i++; 
     return get_depth($id, $depth, $i); 
    } 
} 
Смежные вопросы