投稿が増えれば増えるほど、どんな内容のPOSTがあるんだかよくわからなくなって不便になるだろうなーって思いながらも、どうせ簡単にできるんだろうから後でいいやと放ったらかしだったカテゴリー内の記事リスト一覧表示画面。
わかりづらくなってきたなーと感じたのでいざ改造してみようとしたら、これが結構思い通りにいかなかったというお話。
色々失敗したのだけれど、とりあえずそれはおいておいて。
まず検索。
カテゴリー一覧のページはarchive.phpを優先的に呼び出すらしいので
index.phpをベースにarchive.phpを作成。
- the_title(); で、記事のタイトル
- the_content(); で、記事の本文
今回は各記事のタイトルだけほしいのでthe_title();を使う。
1.なるべく1ページにまとめて表示させたいので、デフォルトの1ページに表示させる記事数を以下の記述で無効にさせる。
query_posts($query_string."&showposts=-1");
<?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> <?php endwhile; endif; ?>
2.どのカテゴリーを吐き出してるかわかりやすくしたいので以下を追加
<?php single_cat_title(); ?>
ついでにh2でくるんでおく
<h2><?php single_cat_title(); ?></h2> <?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> <?php endwhile; endif; ?>
3.カテゴリー内の記事の数を表示させたい、ここでハマる。
以下ごり押しで
//記事の数をカウント <?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?> <?php $mk_count++; ?> <?php endwhile;endif; ?> //吐き出す <?php echo $mk_count; ?>
//記事の数をカウント <?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?> <?php $mk_count++; ?> <?php endwhile;endif; ?> <h2><?php single_cat_title(); ?> <span>( <?php echo $mk_count; ?> )</span></h2> <?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> <?php endwhile; endif; ?>
記事を格納してる配列がどこか(何か)わかれば、それのlengthを参照して簡単にカテゴリ内記事数がわかりそうなんだけど、、、
4.次は
- 投稿日時「the_time()」
- カテゴリが複数にまたがってる時があるのでカテゴリ表示「the_category(‘, ‘);」
- あと最後に編集した時間(よく追記するので)「the_modified_date();」
を表示させる。
<?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php $mk_count++; ?>
<?php endwhile;endif; ?>
<h2><?php single_cat_title(); ?> <span>( <?php echo $mk_count; ?> )</span></h2>
<?php query_posts($query_string."&showposts=-1"); if (have_posts()) : while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
//記事の情報
初回:<?php the_time('Y年n月j日') ?>/
最終更新:<?php the_modified_date('Y年n月j日') ?>/
<?php the_category(', '); ?>
<?php endwhile; endif; ?>
5.これで欲しい情報はそろったので
あとは適当にマークアップして、cssで見た目を整えてみる。
以下カテゴリーの数を取り出すのに失敗した方法
<?php $cat = get_the_category(); $cat = $cat[0]; {
wp_list_categories("include=$cat->cat_ID&show_count=1&title_li=&style=none&echo=0");
} ?>
get_the_category()でカテゴリのIDを取得して
wp_list_categoriesのincludeにぶち込む
wp_list_categoriesそのままだとliに包まれたり、カテゴリ名を表示されるので
show_count=1&title_li=&style=none&echo=0で色々解除
でもbrだけがどうしてもついてきちゃう。
wp-includesのclasses.phpを編集すればそれもどうにかなるみたいだけど
そこに手を加えたくないのでこの案はボツにしました。




