2011-03-13 6 views
0

У меня есть два пользовательских типа сообщений, называемых «проект» и «клиент», которые разделяют таксономию, называемую «сектор».Фильтр wp_list_categories из одного настраиваемого типа сообщений

if (!is_taxonomy('sector')) { 
     register_taxonomy(
     'sector', array('project', 'client'), array(
     'hierarchical' => true, 
     'label' => 'Sector', 
     'query_var' => true, 
     'rewrite' => array('slug' => 'sector'), 
     'with_front' => false 
     )); 

     wp_insert_term('Health', 'sector'); 
     wp_insert_term('Clubs', 'sector'); 
     wp_insert_term('Commercial', 'sector');  
    } 

Я создал шаблон архив систематики с боковой нав, что списки ссылок на мои таксономических архивы с помощью:

//list terms in a given taxonomy using wp_list_categories 

    $orderby  = 'name'; 
    $show_count = 1;  // 1 for yes, 0 for no 
    $pad_counts = 0;  // 1 for yes, 0 for no 
    $hierarchical = 0;  // 1 for yes, 0 for no 
    $show_option_none=''; 
    $title  = ''; 

    $args_sector = array(
     'taxonomy'  => 'sector', 
     'orderby'  => $orderby, 
     'show_count' => $show_count, 
     'pad_counts' => $pad_counts, 
     'hierarchical' => $hierarchical, 
     'title_li'  => $title 
    ); 


<ul id="sideNav" class="rightSubMenu"> 
     <h3 class="rightSubNav">SECTOR</h3> 
     <ul id="sideNav" class="rightSubMenu"> 
     <?php wp_list_categories($args_sector); ?> 
     </ul> 

</ul> 

Проблема заключается в том, если у меня есть проект, который связан с «клубами» и клиент, который связан с «клубами», показывает количество выходных данных. Также на странице архива отображаются 2 сообщения - 1 для проекта и один для клиента. Но есть только один проект.

В основном я интересуюсь страницей проекта и хочу отфильтровать результаты по типу сообщения «проект». Я просмотрел код и функция wp_list_categories, похоже, не принимает параметр для этого.

Может ли кто-нибудь помочь? Есть лучший способ сделать это?

ответ

0

У меня была аналогичная проблема. Я сделал это клонирование функции wp_list_categories, придавая ему другое имя и положить в этом коде после строки: $ категории = get_categories ($ г):

foreach ($categories as $key => $category){ 
     $temp = array ('post_type'=>$r['type'], 'tax_query' => array(
      array (
       'taxonomy' => $category->taxonomy, 
       'field' => 'slug', 
       'terms' => $category->slug 
      ) 

     ) 
      ); 
     $pauli = new wp_query($temp); 
     if($pauli->post_count==0){ 
      unset($categories[$key]); 
     } 
    } 

Как вы можете видеть, это удаляет категории, которые не делают введите любой тип сообщения, который вам нужен, а затем продолжите процесс, как обычно, wp_list_categories.

+0

Вы можете реализовать этот способ без создания пользовательской версии 'wp_list_categories()'. Чтобы использовать один и тот же код в более понятном подходе, подключите фильтр '' get_terms'' (http://adambrown.info/p/wp_hooks/hook/get_terms?version=3.6&file=wp-includes/taxonomy.php), и проверьте целевую таксономию, что вы не находитесь в Личном кабинете, и что основной запрос выполнен, а затем измените счетчики. –