WordPressの固定ページに特定カテゴリの記事一覧を書き出す

WordPress 2011 年 11 月 24 日 google+0 はてなブックマーク4 Evernote

固定記事にあらかじめ決めたカテゴリ一覧を書き出す方法。
テンプレートを複製して、名前を付けます。
 (過去記事:WordPressでページによってテンプレートを変更する場合

もっといい方法が記載されていたので、お急ぎの人はこちらを先にどうぞ。

太字部分が追加した部分。

コピーしてファイル名を変えたpage.phpの37行目付近の以下の形で書いている。

<?php comments_template(); ?>
</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 -->

追加した内容の簡単な説明は

<!-- 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 -->

<?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で指定した複数カテゴリの投稿記事を新着順にリスト表示

この記述だと、複数カテゴリのタイトル付き投稿一覧表示されます。

私の場合はこんな風に書きました。

<!-- title list -->

<?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 -->

以上。上記サイトのをほとんどそのまま書くと動きました。

array( '3', '32', '122', '140', '128', '66', '68', '28', '130', '98' );

カテゴリは、書いた順番で表示されます。

日付を表示したいのでリストタグ内に
<?php the_date_xml(); ?>
だけ追加しています。

これはありがたい。
テーマファイルに記述しているので、category.phpや、tag.phpに書いても同じように表示されると思います。

【ご連絡】WordPress、サイト制作関係の新しい記事は、こちらのサイトに書いてます

広告

CPI 激安ドメイン ロリポップ!レンタルサーバー @Next Style お名前.com お名前.com


人気ブログランキング にほんブログ村 blogram

関連記事

コメント
  • civa より:

    くろむ様はじめまして。特定カテゴリーの一覧表示の方法を探していてたどり着きました。こちらの記事がとても分かりやすく助かりました。ありがとうございます!

    PHPはまだ勉強中なので、他の記事も参考にさせて頂くと思います。またお邪魔します^^

  • くろむ より:

    コメントありがとうございます。
    作業メモのようなブログ記事なのですが、お役にたってるようで嬉しいです。

    企業サイト等ではサイトマップもカテゴリ並び順を指定されたり…という時があり、上のように書いた並び順で表示するのは、私も地味に使っていたりしますねー。

コメントフォーム
メールアドレスは必須ですが公開はされません

トラックバックURL
広告
ブックマーク
はてぶ人気記事
過去ログ