2013-05-10 5 views
1

Ok. Я пробовал код с другого вопроса:Показать категории в категории H3 затем показать подкатегории в списке

<?php 
    $subcategories = get_categories('&child_of=4&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
     echo '<ul>'; 
     foreach ($subcategories as $subcategory) { 
     echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
    } 
    echo '</ul>'; 
?> 

Но не работал. Поскольку я покажу основные категории в H3, я сделал это нединамически. Так что да, это будет выглядеть много PHP. А также: он не работает.

<h3>Automação</h3> 
       <?php 
        $subcategories = get_categories('&child_of=13&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 
       <h3>Balanças</h3> 
       <?php 
        $subcategories = get_categories('&child_of=34&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?>    
       <h3>Caixas Registradoras</h3> 
       <?php 
        $subcategories = get_categories('&child_of=42&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 
       <h3>Gavetas de Dinheiro</h3> 
       <?php 
        $subcategories = get_categories('&child_of=45&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 
       <h3>Impressoras</h3> 
       <?php 
        $subcategories = get_categories('&child_of=49&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 
       <h3>Informática</h3> 
       <?php 
        $subcategories = get_categories('&child_of=57&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 
       <h3>Leitores</h3> 
       <?php 
        $subcategories = get_categories('&child_of=61&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 
       <h3>Marcas</h3> 
       <?php 
        $subcategories = get_categories('&child_of=70&hide_empty'); // List subcategories of category '4' (even the ones with no posts in them) 
        echo '<ul>'; 
        foreach ($subcategories as $subcategory) { 
         echo sprintf('<li><a href="%s">%s</a></li>', get_category_link($subcategory->term_id), apply_filters('get_term', $subcategory->name)); 
        } 
        echo '</ul>'; 
       ?> 

Существует какой-либо способ отображения основной категории в H3 и подкатегориях в одностороннем PHP? Потому что я знаю проблемы производительности и безопасности, когда я размещаю много PHP.

Пример:

H3> AUTOMACAO 
UL 
LI> SUB-CATEGORY 
LI> SUB-CATEGORY 
+0

Это wordpress, я предполагаю? и что «не работает»? – reikyoushin

+0

@reikyoushin привет, это WordPress. Подкатегория не отображается. Он показывает только H3. А также H3 статичен. Я хочу сделать его динамичным. :( – starkbr

ответ

2

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

<?php //Get list of parent category IDs and put it inside of $parent_categories array 
    $category_ids = get_all_category_ids(); 
    $parent_categories = array(); 
    foreach($category_ids as $cat_id) { 
     $category = get_category($cat_id); 
     if ($category->parent == 0) { 
      $parent_categories[] = $category->cat_ID; 
     } 
    } 
?> 
<?php //Display each parent <h3>category</h3> and <ul>subcategories</ul> 
    foreach ($parent_categories as $pcat) : 
     $category = get_category($pcat); 
?> 
     <h3><?php echo ucfirst($category->name); ?> </h3> 
     <?php /* if you want to show the full link you can use this instead 
     <?php 
     $parentArgs = array(
      'title_li'   => '', 
      'include'   => $pcat 
     ); 
     ?> 
     <h3><?php wp_list_categories($parentArgs); ?></h3> 

     */ ?> 
     <ul> 
     <?php 
      $childArgs = array(
       'title_li'   => '', //You could put the parent category title in here if you want 
       'child_of'   =>$category->cat_ID 
      ); 
      wp_list_categories($childArgs); 
     ?> 
     </ul> 
<?php endforeach; ?> 

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ ЗАПРОШЕННЫЙ:

можно отобразить на основе систематики здесь пример.

<?php //Get list of parent category IDs and put it inside of $parent_categories array 
    $category_ids = get_all_category_ids(); 
    $parent_categories = array(); 
    foreach($category_ids as $cat_id) { 
     $category = get_category($cat_id); 
     if ($category->parent == 0) { 
      $parent_categories[] = $category->cat_ID; 
     } 
    } 
?> 
<?php //Display each parent <h3>category</h3> and <ul>subcategories</ul> 
    foreach ($parent_categories as $pcat) : 
     $category = get_category($pcat); 
     if ($category->taxonomy == 'category') : //You change the 'category' to your taxonomy. 
?> 
      <h3><?php echo ucfirst($category->name); ?> </h3> 
      <ul> 
      <?php 
       $childArgs = array(
        'title_li' => '', //You could put the parent category title in here if you want 
        'child_of' =>$category->cat_ID 
       ); 
       wp_list_categories($childArgs); 
      ?> 
      </ul> 
    <?php endif; ?> 
<?php endforeach; ?> 
+0

Практически мне нужно отображать категории персонализированного типа сообщений. Но да, это в основном то, что мне нужно. – starkbr

+1

Пошел вперед и добавил дополнительную информацию, которую вы запросили. Рекомендуется четко отобразить то, что вы пытаетесь выполнить в ваш вопрос. –

+0

Первое решение работало нормально (за исключением того, что я не размещал дополнительную информацию, поэтому вы путаете), но второй нет. :( – starkbr

Смежные вопросы