2009-11-22 21 views
7

Sono nuovo di Wordpress e mi sto strappando i capelli cercando di creare un ciclo di categorie. Il ciclo si suppone:Ciclo di parole attraverso categorie wordpress

  1. ciclo attraverso tutte le categorie
  2. Echo il nome della categoria (con link al
  3. eco gli ultimi 5 posti in quella categoria (con permalink di inviare)

il codice HTML per ogni sarebbe

<div class="cat_wrap"> 
    <div class="cat_name"> 
     <a href="<?php get_category_link($category_id); ?>">Cat Name</a> 
    </div> 
    <ul class="cat_items"> 
     <li class="cat_item"> 
     <a href="permalink">cat item 1</a> 
     </li> 
     <li class="cat_item"> 
     <a href="permalink">cat item 2</a> 
     </li> 
     <li class="cat_item"> 
      <a href="permalink">cat item 3</a> 
     </li> 
     <li class="cat_item"> 
     <a href="permalink">cat item 4</a> 
     </li> 
     <li class="cat_item"> 
     <a href="permalink">cat item 5</a> 
     </li> 
    </ul> 
</div> 

Aiutateci

+0

è la sezione modello o gli altri file? – streetparade

risposta

6

Hy mantenere le cose semplici ecco come si può risolvere

<?php wp_list_categories('show_count=1&title_li=<h2>Categories</h2>'); ?> 
+1

Sì, usa wp_list_categories e in Impostazioni-Lettura, imposta le "Pagine del blog mostrate al massimo" su 5. – Michael

+0

L'unico problema con wp_list_categories() è che non puoi controllare l'output in maniera decente. –

8

Ops, perdere che volevi 5 messaggi

<?php 
//for each category, show 5 posts 
$cat_args=array(
    'orderby' => 'name', 
    'order' => 'ASC' 
    ); 
$categories=get_categories($cat_args); 
    foreach($categories as $category) { 
    $args=array(
     'showposts' => 5, 
     'category__in' => array($category->term_id), 
     'caller_get_posts'=>1 
    ); 
    $posts=get_posts($args); 
     if ($posts) { 
     echo '<p>Category: <a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>' . $category->name.'</a> </p> '; 
     foreach($posts as $post) { 
      setup_postdata($post); ?> 
      <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> 
      <?php 
     } // foreach($posts 
     } // if ($posts 
    } // foreach($categories 
?> 
+0

Ho trovato che inline 'global $ post;' è stato aggiunto a questo in alto, [https://codex.wordpress.org/Function_Reference/setup_postdata](https://codex.wordpress.org/Function_Reference/setup_postdata) – MrG

+0

@ MRG A meno che non lo stiate usando nel ciclo, sì. –

1

ho fatto questa porzione di codice per scorrere la nidificato categorie. Condivisione.

 //Start on the category of your choice  
     ShowCategories(0); 

     function ShowCategories($parent_category) { 
       $categories = get_categories(array('parent' => $parent_category, 'hide_empty' => 0)); 
       foreach ($categories as $category) { 
        ?><ul><li><?=$category->cat_name;?><? 
        ShowCategories($category->cat_ID); 
        ?></li></ul><? 
       } 
     } 
0

Date un'occhiata a questo altro thread StackOverflow:

https://wordpress.stackexchange.com/questions/346/loop-through-custom-taxonomies-and-display-posts/233948#233948

ho inviato una risposta che uso nella produzione e funziona come un fascino.

Basta ricordare di regolare gli argomenti per visualizzare solo 5 post, anziché tutti.

$args = array('showposts' => 5); 

Aggiungi 'showposts' => 5 per il vostro attuale gamma di argomenti nel circuito che consente di scorrere i posti di ogni categoria.

Problemi correlati