Cum să afișezi lista de articole din categoriile copil într-un singur șablon?
Iată ce doresc să obțin
Structura categoriilor în administrarea WP
Cat Părinte
-Cat Copil 1
-Cat Copil 2
-Cat Copil 3
-Cat Copil 1
Iată ce doresc să afișez într-un singur șablon:
Să arate lista de articole din categoriile copil ale Categoriei Părinte
Cat Copil 1
-Articol1 Copil 1
-Articol2 Copil 1
-Articol3 Copil 1
-Și așa mai departe...
Cat Copil 2
-Articol1 Copil 2
-Articol2 Copil 2
-Articol3 Copil 2
-Și așa mai departe...
Cat Copil 3
-Articol1 Copil 3
-Articol2 Copil 3
-Articol3 Copil 3
-Și așa mai departe...
A mai făcut cineva asta înainte sau are cineva idee cum să implementez acest lucru?
Mulțumesc
obțineți categoriile copil, folosind get_categories(); apoi parcurgeți-le cu un loop foreach, utilizând WP_Query() :
<?php $cats = get_categories('child_of='.get_query_var('cat'));
foreach ($cats as $cat) :
$args = array(
'posts_per_page' => 3, // numărul maxim de articole per categorie
'category__in' => array($cat->term_id)
);
$my_query = new WP_Query($args);
if ($my_query->have_posts()) :
echo '<h3>'.$cat->name.'</h3>';
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<?php /* ieșirea generală a loop-ului; de exemplu: */ ?>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> <br />
<?php endwhile; ?>
<?php else :
echo 'Niciun articol pentru '.$cat->name;
endif;
endforeach; ?>

Utilizarea wp_reset_query nu este corectă, această funcție este folosită pentru a reseta interogarea principală a buclei, dar aici ați creat o a doua interogare și apelarea wp_reset_query nu va avea niciun efect asupra variabilei $my_query.

@Hameedullah Khan mulțumesc pentru comentariu; am eliminat-o din codul de mai sus. dacă este necesar, ar trebui adăugat un cod pentru a păstra interogarea originală în codul de mai sus.

Buclă de taxonomie părinte-copil
$taxonomy = 'product_cat'; // Definim taxonomia ca fiind categoriile de produse
$category = get_terms($taxonomy); // Obținem toți termenii (categoriile) din taxonomia specificată
echo '<ul>'; // Începem lista neordonată principală
foreach( $category as $cat ){ // Parcurgem fiecare categorie
$link = get_term_link( $cat->slug, $taxonomy ); // Obținem linkul categoriei
if(empty($cat->parent)){ // Dacă categoria nu are părinte (este categorie principală)
echo '<li><a href="' . $link . '">' . $cat->name . '</a>' . '<strong>' . $cat->count . '</strong></li>'; // Afișăm categoria principală cu numărul de produse
}
$loop = 0; // Inițializăm contorul pentru subcategorii
foreach( $category as $par ){ // Parcurgem din nou toate categoriile pentru a găsi subcategorii
$link = get_term_link( $par->slug, $taxonomy ); // Obținem linkul pentru fiecare categorie
if($cat->term_id == $par->parent ){ // Dacă categoria curentă este părintele
if($loop == 0){ echo '<ul>'; } // Dacă este prima subcategorie, începem o listă nouă
echo '<li><a href="' . $link . '">' . $par->name . '</a>' . $par->count . '</li>'; // Afișăm subcategoria cu numărul de produse
$loop++; // Incrementăm contorul
}
}
if($loop > 0){ echo '</ul>'; } // Dacă au existat subcategorii, închidem lista
}
echo '</ul>'; // Închidem lista principală

<ul class="catTags">
<?php
$args = array(
'show_option_all' => '',
'orderby' => 'count',
'order' => 'DESC',
'style' => 'list',
'show_count' => 0,
'hide_empty' => 1,
'use_desc_for_title' => 1,
'child_of' => 0,
'feed' => '',
'feed_type' => '',
'feed_image' => '',
'exclude' => 1,
'exclude_tree' => '',
'include' => '',
'hierarchical' => 1,
'title_li' => __( '' ),
'show_option_none' => __('Nicio categorie'),
'number' => null,
'echo' => 1,
'depth' => 2,
'current_category' => 0,
'pad_counts' => 0,
'taxonomy' => 'category',
'walker' => null
);
wp_list_categories( $args );
?>
</ul>
</div>
<?php get_sidebar(); ?>
Și CSS-ul :
section .primary ul.catTags {
padding:0px;
}
section .primary ul.catTags li {
float: left;
list-style-type: none;
margin: 0px 20px 10px 20px;
}
section .primary ul.catTags li a,section .primary ul.catTags li a:visited {
font-size:18px;
text-decoration:underline;
}
section .primary ul.catTags li a:hover {
text-decoration:none;
}
section .primary ul.catTags li ul.children {
max-width:200px;
}
section .primary ul.catTags li ul.children li {
margin: 0px 5px 3px 5px;
display: inline;
}
section .primary ul.catTags li ul.children li a, section .primary ul.catTags li ul.children li a:visited {
font-size:14px;
text-decoration:none;
}
section .primary ul.catTags li ul.children li a:hover {
text-decoration:underline;
}
