2009-11-22 13 views
7

私はWordpressを初めて使用していて、カテゴリのループを作成しようとしているときに私の髪を引っ張っています。ループをすることになっている:すべてのカテゴリ WordPressのカテゴリをループする

    1. ループはポストへのパーマリンクを(そのカテゴリ内の最後の5つのポストをエコー
    2. へのリンク(カテゴリ名をエコー)

    それぞれのHTMLは

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

    だろう

    を助けてくださいここでは、単純なの
  • +0

    はテンプレートセクションですか、それとも他のファイルですか? – streetparade

    答えて

    6

    Hyの預かりもの、あなたが

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

    wp_list_categoriesを使用し、設定 - 読み込みでは、 "最大で表示するブログページ数"を5に設定します。 – Michael

    +0

    wp_list_categories()の唯一の問題は、出力を制御できないことです。 –

    8

    おっと、あなたが私は、入れ子をループするコードのこのビットを行った5回の投稿

    <?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

    インラインで 'global $ post;'がトップに追加されていることがわかりました。[https://codex.wordpress.org/Function_Reference/setup_postdata](https://codex.wordpress.org/Function_Reference/setup_postdata) – MrG

    +0

    @MrGループ内で使用しているのでなければ、そうです。 –

    1

    を望んでいたことを逃したそれを解決する方法でありますカテゴリ。共有。

     //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

    この他のStackOverflowのスレッドを見てみましょう:

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

    私は生産に使うの回答を掲載し、魔法のように動作します。

    5つの投稿のみを表示するように引数を調整してください。ループ内の引数のあなたの現在の配列に

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

    追加「showposts」=> 5、各カテゴリの記事を反復処理します。

    関連する問題