*

wordpressのアーカイブページ、子カテゴリごとに記事一覧を表示させる

公開日: : wordpress, トラブルシューティング

自分のサイトはカテゴリの階層をあまり深くしない(つまり、子カテゴリ・サブカテゴリなどを作成しない)んですが、年末、知人のサイトをボランティアでリニューアルする作業を請負いました。

 

知人がなんだか細かい指示を出してくるなーーと思ったら、子カテゴリがある場合でも、親カテゴリのアーカイブページには、全部一緒に分類もされずに表示されているので、ユーザービリティ悪いのではないかということなんです。
 
私としては、メニュバーでナビゲートしてるので、子カテゴリがある場合は、わざわざ親カテゴリをクリックして、記事一覧を見るだろうか、という疑問が残りますが、管理人の依頼なので仕方がありません。
 
必死に検索してもなかなかよいサンプルがなく、困りましたが、ついに行き着いたのがこちら。
 
 
それでやってみたら、カテゴリアーカイブは大丈夫でしたが、ほかのアーカイブ(月別、タグ別など)が表示されない!
 
がびーーん!
 
数日放置したあと、時間がとれたので最初にディフォルト(今回はWedding Bells)のテンプレに戻ってみてアーカイブページを見ると、
 
<?php if (have_posts()) : ?>
 
   <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
   <?php /* If this is a category archive */ if (is_category()) { ?>
<h2 class="pagetitle">Archive for the ‘<?php single_cat_title(); ?>’ Category</h2>
   <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
<h2 class="pagetitle">Posts Tagged ‘<?php single_tag_title(); ?>’</h2>
   <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
<h2 class="pagetitle">Archive for <?php the_time('F jS, Y'); ?></h2>
   <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
<h2 class="pagetitle">Archive for <?php the_time('F, Y'); ?></h2>
   <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
<h2 class="pagetitle">Archive for <?php the_time('Y'); ?></h2>
 <?php /* If this is an author archive */ } elseif (is_author()) { ?>
<h2 class="pagetitle">Author Archive</h2>
   <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
 
という感じに書いてあったので、なるほど、カテゴリアーカイブの条件分岐部分にこれを挿入すればいいのだなと思ってやったら・・・
 
うまくいったんだけど、記事リストが二重に出てくる部分がある。
 
そうでないカテゴリもあったので、親カテゴリにもチェックが入っているせいかなと思ったんだけど、それでも改善されない。
 
悩んでもう一度テンプレを見ると、
下の部分に
 
<?php while (have_posts()) : the_post(); ?>
 
<div <?php post_class('archive-post'); ?>>
 
<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<small>Posted on <?php the_time('l, F jS, Y') ?></small>
</div>
 
<?php endwhile; ?>
がある。
 
これが問題だ。
 
ここを削除すると、二重は出てこないが、やはりほかのアーカイブが表示されないので、仕方ないから、ベタなやり方だけど、それぞれの条件分岐の下に
 
<?php if (have_posts()) : the_post(); ?>
 
<div <?php post_class('archive-post'); ?>>
 
<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<small>Posted on <?php the_time('l, F jS, Y') ?></small>
</div>
 
<?php endif; ?>
 
と書いてやった。
 
そしたら見事成功。
 
この辺の条件分岐、もう少しスマートに書けると思うんだけど、取り急ぎこれで対処。

関連記事

mt_plugindataのDBテーブル削除した顛末記

昨晩、間違ってMTのデータベースのプラグインのテーブルごと削除してしまったのだが、なぜかA-form

記事を読む

stingerカスタマイズ img srcのURLから画像を表示

stingerネタです。 stingerで投稿の中の画像を拾ってサムネイル表示というものがあり

記事を読む

wordpressのマルチサイト内で同じテンプレでのURLによる条件分岐

wordpressはMUの時から使っているのでマルチサイトで運用しているんですが、最近困っているの

記事を読む

wordpress muで、ファイルをインストールしたフォルダ以外にサイトを表示させたい場合

ということで、昨日試してみた。 参考にしたのはこちらの記事です。 http://blog.

記事を読む

再挑戦

半年以上前、あるサイトを作るのに独自ドメインにwpをインストールした。 MTに比べて、インストールは

記事を読む

youtubeの動画ギャラリーが手軽にできるクールなwordpress プラグイン Tubepress

http://kachibito.net/wordpress/tubepress.html こち

記事を読む

初挑戦! SQLコマンドの方法って??

去年の9月から、知人のサイトを無料ブログからwordpressに移す作業をしていたのだが、今日、ド

記事を読む

Can’t call method ”label” on unblessed reference movable typeのエラーを修復する方法

昨日、夜1時過ぎ、バングラサイトのとあるサイトの記事を別サイトに移管、そのサイトを削除。はっ、と思い

記事を読む

wordpress用のショッププラグイン比較

昨日、これもまたペンディングだった知人のショップに着手。 wordpressにはショッピング

記事を読む

WordPress MUのインストールに苦戦・・・

WPはこれはいい!ということでWPMUのインストールに挑戦してみた。 http://mu.wor

記事を読む

PAGE TOP ↑