Cum să afișezi lista de articole din categoriile copil într-un singur șablon?

15 mai 2011, 06:02:05
Vizualizări: 13.8K
Voturi: 0

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

1
Comentarii

Poate nu am înțeles corect întrebarea ta. Vrei să listezi articolele din subcategorii când accesezi lista categoriei părinte? Asta întrebi? Dacă da, acest lucru se întâmplă deja în mod implicit în WordPress. Sau poate vrei ca articolele să fie listate în ordinea subcategoriilor?

Hameedullah Khan Hameedullah Khan
15 mai 2011 12:34:04
Toate răspunsurile la întrebare 3
3

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; ?>
15 mai 2011 10:55:23
Comentarii

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 Hameedullah Khan
15 mai 2011 12:35:02

@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.

Michael Michael
15 mai 2011 14:05:38

Super!! funcționează excelent!! m-ai ajutat foarte mult. Mulțumesc mult, Michael!!

idontknowhow idontknowhow
16 mai 2011 17:11:42
1
-2

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ă
28 mai 2016 08:28:43
Comentarii

Explică codul sau oferă niște indicii, simpla postare a codului nu este suficient de bună.

bravokeyl bravokeyl
28 mai 2016 08:49:43
1
-3
<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;
}
30 mai 2013 10:42:15
Comentarii

Te rog să adaugi o explicație la răspunsul tău: de ce ar putea rezolva această problemă?

fuxia fuxia
30 mai 2013 10:53:16