ちょっと細かいことなんですが、そういえばうっかり忘れていたのでメモ程度で・・・WordPressで、好きな場所に好きな条件で最新の投稿を表示する方法で、「query_posts」「WP_Query」を利用する方もいらっしゃると思います。
ものすごくシンプルな使い方ですと、こんな感じです。
【「query_posts」を使って、最新の投稿を5件取得してリンク付きタイトル表示】
<ul> <?php query_posts('posts_per_page=5'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li> <?php endwhile; endif; wp_reset_query(); ?> </ul>
よくあるパターンで、htmlタグ「ul,li」を使ってリストで表示するやつです。それで、表示されるのはいいんですが「『この投稿を先頭に固定表示』にチェックをつけた投稿」も取得されます。
ここです、ここにチェックを入れた投稿が取得されます
例えば古い投稿にこのチェックをつけていると、古い投稿が最新の投稿に混ざってしまいます。それはちょっとな~・・・ということもあります。
ですので、パラメーターで「『この投稿を先頭に固定表示』にチェックをつけた投稿」を除外して取得する方法があります。
「ignore_sticky_posts」を使う
「ignore_sticky_posts」のパラメーターを使い、値を設定します。
例えばこんな感じです。
<ul> <?php query_posts('posts_per_page=5&ignore_sticky_posts=1'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li> <?php endwhile; endif; wp_reset_query(); ?> </ul>
上のコードに書いてある太字「&ignore_sticky_posts=1」を追加しました。
値は「1」で除外しますので、これでOKです。
「WP_Query」で「ignore_sticky_posts」を使う
同じことを「WP_Query」でやる場合は、例えばこちらでOKです。
<ul> <?php $query = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => 5 ) ); ?> <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li> <?php endwhile; endif; ?> </ul>
「query_posts」と取得結果は同じです。
同じですが「query_posts」と「WP_Query」の違いってのはもちろんありますので、また機会がありましたら。
このページを共有する