WordPress サイトの新着情報一覧表示や投稿表示など、CMS たらしめるためのループ表示に使うスニペットをいくつかここにメモしておきます。
基本的な投稿表示ループから、新着情報の表示件数を指定するループ、カテゴリー指定のループなど便利なものをみつくろいました。
基本中の基本のループ
<?php if(have_posts()): while(have_posts()): the_post(); ?>
//ここに内容
<?php endwhile; endif; ?>
このスニペットが固定ページや投稿ページの本文を表示させるための基本のループ。
使用例
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; ?>
や、ちょっとしたコメントをはさむ以下の型。
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
<?php else : ?>
<p>現在記事はありません。</p>
<?php endif; ?>
このスニペットをはめこむと固定ページや投稿ページの本文が表示されます。他にも日付やタイトルスニペットをはさめば応じたものが表示されます。
表示数を指定できるループ
投稿を表示できる数を指定できるループです。
<?php
$lastposts = get_posts('numberposts=5');
foreach($lastposts as $post) :
setup_postdata($post);
?>
//ここに内容
<?php endforeach; ?>
主にトップページに置いたりする新着記事の一覧の表示数を指定したい時などに使用します。
numberpost の部分の数字が投稿表示数です。
投稿をに一覧表示していき、とにかく新しいものから順番に表示します。カテゴリー分けやカスタム投稿には非対応です。
使用例
<ul>
<?php
$lastposts = get_posts('numberposts=5');
foreach($lastposts as $post) :
setup_postdata($post);
?>
<li>
<?php the_time('Y年m月d日'); ?> | <a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
こんな感じで、ul タグの内側に挟んで、新着一覧として li をループさせたりに使います。もちろん dl に挟んで、dt, dl に使ったり、table に挟んで利用しても良いです。
カテゴリー別に指定するループ
カテゴリー毎の新着一覧などを作りたいときにはこのループ。表示数指定も OK。
<?php $posts = get_posts('numberposts=5&cat=1'); global $post;?>
<?php foreach($posts as $post): ?>
//ここに内容
<?php endforeach; ?>
カテゴリー毎の新着一覧などを作りたいときにはこのループ。表示数指定も OK。
numberposts で表示数を指定、cat= の数字部分に表示させたいカテゴリー ID の番号を指定すれば、そのカテゴリーだけが表示される一覧にできます。
使用例
<dl>
<?php $posts = get_posts('numberposts=5&cat=1'); global $post;?>
<?php foreach($posts as $post): ?>
<dt><?php the_time('Y年m月d日'); ?></dt>
<dd class="boxclick"><a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a></dd>
<?php endforeach; ?>
</dl>
こんな風に親タグに挟まれるかたちで使います。
<?php $posts = get_posts('numberposts=5&cat=1,3,5'); global $post;?>
このように cat= をカンマで切って複数カテゴリー ID を記述すれば、複数のカテゴリー指定も可能です。
特定のカテゴリーを表示させないようにするループ
上の「カテゴリー別に指定するループ」とは逆に「指定したカテゴリーだけ表示させる一覧から抜く」ためのループです。
<?php query_posts('cat=-3,-4,-5,-6,-7&posts_per_page=5&paged='.$paged); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
//ここに内容
<?php endwhile; ?>
<?php endif; ?>
cat= の後に抜きたいカテゴリー ID をマイナス付けて記述します。複数抜きたいときには、カンマで切って、それぞれカテゴリー ID を記述していきます。
細かいことが指定できるループ
<?php
query_posts(
Array(
'post_type' => 'post',
'posts_per_page' => '999',
'orderby' => 'date',
'order' => 'DESC'
)
);
if (have_posts()) : while (have_posts()) : the_post();
?>
//ここに内容
<?php
endwhile; endif;
wp_reset_query();
?>
post type の post は「投稿」を表示し、page なら「固定ページ」、カスタム投稿名(news 等)を記述すれば、その一覧が表示されます。
- posts per page の数字は一覧の表示数
- orderby は「date」なら日付順、name なら名前順に並びます
- order は「DESC」なら降順、「ASC」なら昇順に一覧が並びます
orderby と order で一覧の並びを細かく制御することが可能です。
以上です。