wordpressで特定のカテゴリだけの一覧ページを作りたい

トップページでよく見るブログの新着一覧ですが、ブログ全体の記事一覧ではなく、特定のカテゴリーだけとか、カテゴリー毎に独立して表示させたいと思うことがあると思います。
wordpressには「get_posts()」などの関数が用意されており、簡単に実装することができます。

まずは、カテゴリーのIDを調べましょう

管理画面のカテゴリーの編集画面のURLを見て、tag_IDの番号を調べましょう。

wwww.***********/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=10&post_type=post

この場合は「tag_ID=10」となっているので、カテゴリーのIDは「10」です。
ここで調べたカテゴリーのIDを使って、このIDに紐づい記事だけを表示させていきます。

テンプレートを編集します

index.phpを参考にすると、カテゴリーIDが「10」の記事のみを表示させるには、下記のようになります。

$arg = array(
  'category' => 10, //カテゴリーIDが10の記事
  'posts_per_page' => 5 //表示記事件数(-1で全件表示)
);
$posts = get_posts($arg);

これで$postsの中に条件が満たされた記事が取得されました。
次にこれを表示します。同じくindex.phpを参考にします。

<div id="primary" class="content-area">
  <div id="content" class="site-content">
  <?php
  $arg = array( 
    'category' => 10, //カテゴリーIDが10の記事
    'posts_per_page' => 5 //表示記事件数
  );
  $posts = get_posts($arg);
  ?>
  <?php
  if ( have_posts() ) ://Start the Loop
    foreach($posts as $post): setup_postdata($post);
      get_template_part( 'content', get_post_format() );
    endforeach;
    twentyfourteen_paging_nav();
  else:
    get_template_part( 'content', 'none' );
  endif;
  ?>
  </div><!-- #content -->
</div><!-- #primary -->

カスタム投稿の場合

カスタム投稿でも同じように、カテゴリーを指定することも可能です。
ただし、通常の投稿とは違い、カスタムタクソノミー(カスタム分類)をカテゴリーとして使うことが多いと思います。
「category」も「post」というカスタム投稿のカスタムタクソノミーであり、何も指定が無ければ「post」や「category」は他のものより優先される、と考えればわかり安いのではないかと・・・。
ここでは、「tax_query」を使って「投稿タイプ」などより詳細な条件指定します。

$posts = get_posts(
  array(
    'post_type' => '○○○○' , //投稿タイプのスラッグ名○○○○(通常の投稿はpost)
    'tax_query' => array( array(
    'taxonomy' => '□□□□' , //カスタムタクソノミー□□□□(通常の投稿はcategory)
    'field' => 'term_id',
    'term' => xx , //カスタムタクソノミー内のタームのterm_ID××
    /*'terms' => array(1,2,3), //複数のタームを選びたい場合*/
  )),
  'posts_per_page' => 5 //表示記事件数(-1で全件表示)
));

「’field’ => ‘term_id’,」を「’field’=>’slug’,」にするとスラッグ名でも指定できます。

$posts = get_posts(
  array(
    'post_type' => '○○○○' , //投稿タイプのスラッグ名○○○○(通常の投稿はpost)
    'tax_query' => array( array(
    'taxonomy' => '□□□□' , //カスタムタクソノミー□□□□(通常の投稿はcategory)
    'field' => 'slug',
    'term' => '××××' , //カスタムタクソノミー内のタームスラッグ××××
    /*'terms' => array( 'aaa','bbb','ccc' ), //複数のタームを選びたい場合)*/
  )),
  'posts_per_page' => 5 //表示記事件数(-1で全件表示)
));

この方法ならカスタム投稿でも通常の投稿でも対応できます。