2017-07-29 7 views
0

espérons que quelqu'un peut m'aider avec cela, j'ai ce code qui fonctionne bien, il montre sur le clic de la catégorie supérieure (dieta) leurs sous-catégories et à la fin du post liste. le problème est que je ne peux pas filtrer la sortie pour montrer seulement un niveau de sous-catégorie (composé de 2 sous-catégories), tous sont listés (sous-catégorie - sous-catégorie - sous-sous-catégorie) (9 d'entre eux total!). comment puis-je lister seulement un niveau de l'arbre à la fois?wordpress montrer seulement le premier niveau de sous catégories

site d'exemple: http://www.dietaedesercizi.it/category/dieta/

<?php 
/** 
* Template Name: menu 
* 
* @package Binox - Diet Walk 
*/ 
get_header(); ?> 

    <p>pagina menu</p> 
<div id="categorie"> 
<?php if (is_category()) { 

    $this_category = get_category($cat); 

    if (get_category_children($this_category->cat_ID) != "") { 
     echo '<div id="catlist"><ul>'; 
      $childcategories = get_categories(array(
       'orderyby' => 'name', 
       'hide_empty' => false, 
       'child_of' => $this_category->cat_ID 
      )); 

     foreach($childcategories as $category) { 
      echo '<a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>' . $category->name.'</a>'; 
      echo '<p>'.$category->description.'</p>'; 
     } 
     echo '</ul></div>'; 
    } else { 

     if (have_posts()) : while (have_posts()) : the_post(); 
     the_content(); 
    endwhile; 
endif; 
    } 
} 
?> 

</div> 
<?php post_navigation(); ?> 

<?php get_sidebar(); ?> 

<?php get_footer(); ?> 

Merci pour votre aide!

+0

Si vous pouvez créer l'arborescence attendue avec des données de démonstration, je peux vous aider, j'ai déjà fait ça auparavant. –

+0

désolé je ai créé un arbre de test plus clair en anglais, il commence par le menu principal parent "level1" puis il va à -> level2a et level2b, ici vous pouvez voir le problème, au lieu de seulement ces 2 sous-catégories directes il y a , mixte, les autres sous sous catégories du niveau 3 (niveau 3a b et c)! http://www.dietaedesercizi.it/category/level1/ –

Répondre

0

utiliser la fonction get_term() et construire votre propre menu ou tout ce que vous voulez , obtenez d'abord les catégories de parents:

$categories = get_terms( 
    'category', 
    array('parent' => 0) 
); 

que dans la boucle foreach obtenir Childs catégorie comme ceci:

foreach ($categories as $category) : 
    $childs = get_terms( 
       'category', 
       array('parent' => $category->term_id) 
      ); 
    foreach($childs as $child){ 
     echo $child->name; 
    } 
endforeach; 
+0

merci pour votre réponse! J'ai essayé le code mais je n'ai pas compris où je dois mettre la première partie, ce que je fais est de créer un "menu page par page" basé sur les catégories, j'ai une page wordpress avec le code ci-dessus, je créé une démo plus claire avec les niveaux 1 - 2 et 3 et un exemple de publication dans les sous-catégories finales 3a b et c. voici la démo: http://www.dietaedesercizi.it/category/level1/ –

0

Nous vous remercions de votre aide, j'ai trouvé un autre code, mélangé avec celui que j'ai et j'ai obtenu la solution!

voici:

<div id="categorie"> 
<?php if (is_category()) { 

    $this_category = get_category($cat); 

    if (get_category_children($this_category->cat_ID) != "") {$cat_id = get_query_var('cat'); 
$args=array(
      'parent' => $cat_id, 
      'hide_empty' => 0, 
      'orderby' => 'name', 
      'order' => 'ASC' 
     ); 
     $categories=get_categories($args); 
     foreach($categories as $category) { 
      echo '<a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>' . $category->name.'</a>'; } 

     echo '</ul></div>'; 
    } else { 

     if (have_posts()) : while (have_posts()) : the_post(); 
     the_content(); 
    endwhile; 
endif; 
    } 
} 
?> 

</div> 

maintenant je suis le tester, mais il semble être bien! Je vous remercie!