たかなblog

のんびりと色んな情報を発信していきます。

カスタマイズ

カスタム投稿タイプの記事をカテゴリーアーカイブに表示させる方法

2014/10/25

お久しぶりです、高菜です。

先日、カスタム投稿タイプの記事がカテゴリーアーカイブに表示されないと質問を頂きましたので、その解決方法をご紹介したいと思います。

カスタム投稿タイプとは?

カスタム投稿タイプの詳細と使用方法、設定方法については、以前「Custom Post Type UI」を利用して、カスタム投稿タイプを作成しよう。で記載しましたので、興味があればご覧下さい。

カテゴリーアーカイブにカスタム投稿タイプを表示させるには

それでは本題です。

カスタム投稿タイプの記事をカテゴリーアーカイブに含めるには、テーマファイルを編集してあげる必要があります。

カテゴリー表示のメインループの前に以下のソースを加えてください。

[php]
<?php
global $wp_query;
query_posts(array_merge(
array( 'post_type' => array('post','カスタム投稿タイプ名') ),
$wp_query->query
));
?>
[/php]

え?メインループの前ってだからどこよ?となった方ごめんなさい。
Wordpressのカテゴリー表示のテンプレートは、以下の順番で優先順位が決まっています。

  1. category-slug.php
  2. category-6.php
  3. category.php
  4. archive.php
  5. index.php

 

例えばあなたの使っているテーマファイルの中に、category-カテゴリー名.phpやcategory-カテゴリーID.phpのファイルが存在する場合、いくらcategory.phpやarchive.phpを編集しても反映されませんので、まずはご自身のテーマファイルを確認してみてください。

上から順に優先順位が高いので、category-カテゴリー名.phpを探して、なければcategory-カテゴリーID.phpを探して、なければcategory.phpを探して、、と探していき、最初に見つかったファイルを編集してあげる必要があります。

多分ほとんどのテーマファイルが3.category.phpか、4.archive.phpの書き換えになると思います。

挿入位置

テーマファイルにもよりますが、おそらく

[php]
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
[/php]

とか、

[php]
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
[/php]

と記載されている場所があると思いますので、そのすぐ上に先ほどのコード

[php]
<?php
global $wp_query;
query_posts(array_merge(
array( 'post_type' => array('post','カスタム投稿タイプ名') ),
$wp_query->query
));
?>
[/php]

を貼り付けてみてください。
少なくともデフォルトテーマ(Twenty_Fourteen)とStinger3はこれで動作したので、大丈夫だと思います。

もし「このテーマで動かなかったよ!」などの情報や、逆に「テーマファイルをいじらなくても、このプラグインを使えばいけたよ!」という情報をお持ちの方がいらしたらコメントいただけると嬉しいです。
今回は簡単でしたが、それではまた。

-カスタマイズ
-, ,

おすすめ記事

1
12月目前!クリスマスグッズ、どんなものに関心が集まっているの?

今回気になってまとめてみたのは、「クリスマスの人々の関心」について。 昨年(20 ...

2
年賀状印刷、業者に委託してでオシャレに?自宅で徹底的にこだわる?

年賀状作成は、プロにお願いする時代!? 年賀状のテンプレートが簡単に手に入るよう ...

3
ハロウィン、クリスマスに!とにかく可愛いコスプレ子供服【最新版】

ハロウィンも終わり、クリスマスが楽しみな季節になりました! これからクリスマスパ ...