この記事は2019年以前他サイトに執筆したものを引越し掲載しています。情報が古い可能性があります。
WPサイトトップページで「お知らせ」を表示する際、「先頭に固定表示」を使いたいという場合。今回もともと最新記事から4件を表示していましたが、ずっと掲載したいものが出たケース。
この場合「先頭に固定表示」を単に有効にするだけだと、書き方によって以下のような問題が発生してしまう可能性があります。
- 表示したい合計記事数が増えてしまう…(例:「先頭に固定」2+最新4で表示数が6)
- 同じ記事がダブって表示される…(「先頭に固定」した記事が最新3記事内だと同じ記事がダブって表示される)
考え方と手順例
- 先頭固定記事のみを取得する
‘post__in’=> get_option( ‘sticky_posts’ ) - 「先頭に固定表示」以外のnewsカテゴリの記事を取得する。これによりダブって同じものが表示されるケースを無くす。
‘post__not_in’ => get_option( ‘sticky_posts’ ) - 設定が全部で4記事表示なら’posts_per_page’=4だが
このままだと「先頭に固定表示」分だけ数が増えてしまうので引き算
引き算の方法
- countを使って「先頭固定記事」の数($posts)を取ってくる
$fixed=count($posts) - 表示したい合計数(4)から引く
$list_count = 4-$fixed - 結果を固定以外のnewsカテゴリの記事の配列に入れる
‘posts_per_page’ => $list_count