自作のWordpressテーマで「先頭に固定表示」が効かなくて、ちょっと慌てたお話です。
自作のトップページに最新の投稿を5件くらい表示させたりするじゃないですか。そこに、先頭固定表示されなくて…。
でも、index.phpとかにはちゃんと表示されるんですよ。
原因は「get_posts()」
「get_posts()」を使うと「先頭に固定表示」が無効になるらしいです。
「WP_query()」にするだけですぐに直りました。
投稿の一覧系取得には「get_posts()」を使ってきてたんですが、こんな落とし穴があったとは…。
これからは「WP_query」の方を使う方が無難かなぁと思っています。
「WP_query()」を使う書き方
$arg = array( 'posts_per_page' => 5 //表示記事件数(-1で全件表示) 'category' => 10, //カテゴリーIDが10の記事にしぼりこみたいとき 'orderby' => 'date', //並び順 'order' => 'DESC' //降順(日付の新しい順) ); $query = new WP_Query($arg);
これで$postsの中に条件が満たされた記事が取得されました。
「get_posts()」と同じです。
<?php if($query->have_posts()): while($query->have_posts()):$query->the_post();?> ここにループ内容 <?php endwhile; else:?> 記事がないとき <?php endif;?>
ある意味、index.phpに似てるので、やはりこちらを使う方がいいような気がしてきました。