*

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; ?>
 
と書いてやった。
 
そしたら見事成功。
 
この辺の条件分岐、もう少しスマートに書けると思うんだけど、取り急ぎこれで対処。

関連記事

言語バーが消失!復元も不可!原因はパソコンウイルス

タイトルそのまんまです。   いきなり言語バーが表示されなくなり、日本語が打てなくな

記事を読む

google mapsの逆ジオコーディングの格闘記

今年、年明けに思い立って、Yahooカテゴリ用に作成した1月1日サイト。 ヤフカテならずで今

記事を読む

デザインのカスタマイズ

次なる手順は、デザインのカスタマイズ。 wpではテーマという。 バナーの写真変更はかなり簡単にできた

記事を読む

The plugin generated 3 characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.の原因&解決法

自作のwordpressプラグインを入れて、アクティベイト(有効化)しようとすると、 The p

記事を読む

IE7のエラー:http://runonce.msn.com/runonce3.aspx

vista付属されているIE7なのだが、以前から起動すると、http://runonce.msn.c

記事を読む

ノートパソコンのモニターが突然暗くなったり正常に戻ったり

バングラデシュに来て1月ぐらいたったころ・・・   突然、ノートパソコンのモ

記事を読む

【wordpress】 テーマの種類

インストールが終わったら、次はテーマ。   見るところ、フリースペースのほう

記事を読む

記事のインポート

昔は、といっても半年とかそのぐらいだが、MTからの記事のインポートはファイル形式でできなかったように

記事を読む

使っていたマウスの動きが悪くなった!そんなときあなたは・・・・?

昨日の夜から、なんかマウスの動きが悪い。   いつもマウスパッドもせずにやってる

記事を読む

ktai styleで見ると記事の中身がない理由

wordpressを使うようになって、ktai styleという便利なものがあると知り、携帯サイト

記事を読む

PAGE TOP ↑