固定記事にあらかじめ決めたカテゴリ一覧を書き出す方法。
テンプレートを複製して、名前を付けます。
(過去記事:WordPressでページによってテンプレートを変更する場合)
もっといい方法が記載されていたので、お急ぎの人はこちらを先にどうぞ。
太字部分が追加した部分。
コピーしてファイル名を変えたpage.phpの37行目付近の以下の形で書いている。
</div><!--end entry-->
<!-- title list -->
<div class="entry">
Movable Type
<ul style="line-height:150%;">
<?php $my_query = new WP_Query('&cat=96&showposts=200'); ?>
<?php if ($my_query->have_posts()) : ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - <?php echo get_the_modified_time(__('Y.m.d ', 'vicuna')); ?></li>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
</ul>
</div>
<!-- title list end -->
<!--start dynamic_sidebar footer -->
追加した内容の簡単な説明は
<div class="entry">
Movable Type
<ul style="line-height:150%;">
<?php $my_query = new WP_Query('&cat=96&showposts=200'); ?>
<?php if ($my_query->have_posts()) : ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - <?php echo get_the_modified_time(__('Y.m.d ', 'vicuna')); ?></li>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
</ul>
</div>
<!-- title list end -->
<?php $my_query = new WP_Query('&cat=96&showposts=200'); ?>
cat=96 の96は、表示したいカテゴリID
showposts=200 の200は表示したい投稿数の上限
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - <?php echo get_the_modified_time(__('Y.m.d ', 'vicuna')); ?></li>
の部分で、タイトル - 日付 を繰り返し表示している。
一応はこれで特定カテゴリの記事一覧が表示できた。
でも、もっとスマートな書き方があるのかも。
と、調べてみたらありました。
詳しくは以下のページの解説付をご覧ください。
・カテゴリIDで指定した複数カテゴリの投稿記事を新着順にリスト表示
この記述だと、複数カテゴリのタイトル付き投稿一覧表示されます。
私の場合はこんな風に書きました。
<?php
global $post;
$tmp_post = $post;
$category_ids = array( '3', '32', '122', '140', '128', '66', '68', '28', '130', '98' );
$numberposts = '100';
foreach ( $category_ids as $category_id ) {
?>
<h2><?php echo get_cat_name( $category_id ); ?></h2>
<ul style="line-height:150%;">
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
foreach ( $postslist as $post ) {
?>
<li><a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a> <?php the_date_xml(); ?></li>
<?php
}
?>
</ul>
<?php
}
$post = $tmp_post;
?>
<!-- title list end -->
以上。上記サイトのをほとんどそのまま書くと動きました。
カテゴリは、書いた順番で表示されます。
日付を表示したいのでリストタグ内に
<?php the_date_xml(); ?>
だけ追加しています。
これはありがたい。
テーマファイルに記述しているので、category.phpや、tag.phpに書いても同じように表示されると思います。
コメント
コメント
くろむ様はじめまして。特定カテゴリーの一覧表示の方法を探していてたどり着きました。こちらの記事がとても分かりやすく助かりました。ありがとうございます!
PHPはまだ勉強中なので、他の記事も参考にさせて頂くと思います。またお邪魔します^^
コメントありがとうございます。
作業メモのようなブログ記事なのですが、お役にたってるようで嬉しいです。
企業サイト等ではサイトマップもカテゴリ並び順を指定されたり…という時があり、上のように書いた並び順で表示するのは、私も地味に使っていたりしますねー。
トラックバックURL