2014-12-03 2 views
-1

아래 코드는 모든 lis 항목에 사용자 정의 클래스를 추가합니다.Walker_Category - 상위 클래스 항목에 클래스 적용

어떻게 부모 카테고리 항목 인 항목을 나열하기 위해 맞춤 클래스를 추가 할 수 있습니까?

이 컨텍스트에서 카테고리가 부모인지 확인하는 방법에 대해서는 확실하지 않습니다.

class Cat_Walker extends Walker_Category { 
function start_el(&$output, $category, $depth = 0, $args = array(), $current_object_id = 0) { 
     extract($args); 

     $cat_name = esc_attr($category->name); 
     $cat_name = apply_filters('list_cats', $cat_name, $category); 
     $link = '<a href="' . esc_attr(get_term_link($category)) . '" '; 
     $link .= 'data-filter="' . urldecode($category->slug) . '" '; 
     if ($use_desc_for_title == 0 || empty($category->description)) 
       $link .= 'title="' . esc_attr(sprintf(__('View all posts filed under %s', 'framework'), $cat_name)) . '"'; 
     else 
       $link .= 'title="' . esc_attr(strip_tags(apply_filters('category_description', $category->description, $category))) . '"'; 
     $link .= '>'; 
     $link .= $cat_name . '</a>'; 

     if (!empty($feed_image) || !empty($feed)) { 
       $link .= ' '; 

       if (empty($feed_image)) 
         $link .= '('; 

       $link .= '<a href="' . get_term_feed_link($category->term_id, $category->taxonomy, $feed_type) . '"'; 

       if (empty($feed)) { 
         $alt = ' alt="' . sprintf(__('Feed for all posts filed under %s', 'framework'), $cat_name) . '"'; 
       } else { 
         $title = ' title="' . $feed . '"'; 
         $alt = ' alt="' . $feed . '"'; 
         $name = $feed; 
         $link .= $title; 
       } 

       $link .= '>'; 

       if (empty($feed_image)) 
         $link .= $name; 
       else 
         $link .= "<img src='$feed_image'$alt$title" . ' />'; 

       $link .= '</a>'; 

       if (empty($feed_image)) 
         $link .= ')'; 
     } 

     if (!empty($show_count)) 
       $link .= ' (' . intval($category->count) . ')'; 

     if (!empty($show_date)) 
       $link .= ' ' . gmdate('Y-m-d', $category->last_update_timestamp); 

     if ('list' == $args['style']) { 
       $output .= "\t<li"; 
       $class = 'cat-item cat-item-' . $category->term_id; 

       if ($category->term_id == $category->parent) { 
        $class .= ' true'; 
       } else { 
        $class .= ' false'; 
       } 

       if (!empty($current_category)) { 
         $_current_category = get_term($current_category, $category->taxonomy); 
         if ($category->term_id == $current_category) 
           $class .= ' current-cat'; 
         elseif ($category->term_id == $_current_category->parent) 
           $class .= ' current-cat-parent'; 
       } 
       $output .= ' class="' . $class . '"'; 
       $output .= ">$link\n"; 
     } else { 
       $output .= "\t$link<br />\n"; 
     } 
} 
} 

답변

0

내가 ($ 인수를) print_r의 생각 :

당신은 너무 많은 코드를 게시, 그래서 난 그냥이 당신을 위해 완전히 새로운 파일을 쓰기보다는, 사용하는 방법을 간략하게 설명합니다 'has_children => 1'을 포함합니다.

예 :

if ('list' == $args['has_children']) { 
    $class .= ' has-children'; 
} 

감사합니다.

0

당신은 지정된 카테고리는 부모가 있는지 여부를 결정하기 위해 get_category_parents()를 사용할 수 있습니다. 그렇지 않은 경우 WP_Error이 반환됩니다. is_wp_error()에 오류가 있었는지 여부를 확인할 수 있습니다. 이는 실제로

<?php 

    $parents = get_category_parents($category->term_id); 

    // If it doesn't have a parent (i.e. it IS a parent)... 
    if (is_wp_error($parents)) { 
     // Add a class 
    } 

?>   
+0

이상적으로는 Walker_Category와 함께 사용하고 싶었습니다. 나는 그 덩어리를 참고 문헌으로 올렸지 만 그것은 무시 무시한 것처럼 보였다. –