2011-09-22 5 views
3

wp_list_categories 함수에 다음 인수를 지정했습니다.wp_list_categories의 'All'카테고리 강조 표시

<?php wp_list_categories('show_option_all=All&hide_empty=0&title_li=&current_category=All'); ?> 

'모든'옵션을 카테고리 목록에 표시하고자합니다. 그러나 기본적으로 모든 게시물이로드되므로 current_category의 스타일 또한 '모두'에 적용되어야합니다. 그러나 All에는 카테고리 ID가 없으므로 current-cat 클래스를 'All'에 적용하는 방법을 모르겠습니다.

제안 사항?

답변

1

목록을 변수로 가져올 수 있습니다 (매개 변수에 echo = 0 추가). 문자열 대체를 사용하여 사용자 정의 클래스를 삽입 할 수 있습니다.

업데이트 :이 같은

뭔가 :

<?php 
function str_replace_once($needle , $replace , $haystack){ 
    $pos = strpos($haystack, $needle); 
    if ($pos === false) { 
     return $haystack; 
    } 
    return substr_replace($haystack, $replace, $pos, strlen($needle)); 
} 
    $args = array('show_option_all' => 'All', 
        'hide_empty' => '0', 
        'title_li' => '', 
        'current_category' => 'All', 
        'echo' => '0'); 
      $str = wp_list_categories($args); 

      $str = str_replace_once('<li>', '<li class="current-cat">', $str); 
      echo $str; 
?> 
+1

더 자세히 설명해 주시겠습니까? 이 솔루션은 내 머리 위로가는 길을 갔다 :/ – Ganesh

+0

그건 훌륭한 설명이었다 windyjonas! 정말 고맙습니다! – Ganesh

0

당신은 복잡성의 일부를 제거하는 preg_replace이다를 사용할 수 있습니다. 마지막 매개 변수는 대체 할 발생 횟수를 제한합니다.

$list = wp_list_categories([ 
    'show_option_all' => 'All', 
    'hide_empty' => false, 
    'title_li' => '', 
    'current_category' => 'All', 
    'echo' => false 
]); 

$list = preg_replace('/<li>/', '<li class="current-cat">', $list, 1); 
echo $list;