WordPressのWP_Query関数を使っていても「この投稿を先頭に固定表示」を使うと記事件数がはみ出してしまう問題を解決するソースコード
こんにちは。コワーキングスペース7Fの星野邦敏です。
WordPressのテーマのカスタマイズ方法として、WP_Query関数を使って記事一覧を表示するケースがあると思います。
例えば、以下のような感じです。
<?php $my_query = new WP_Query(array( 'posts_per_page' => 10, 'orderby' => 'date', 'order' => 'DESC' )); ?>
しかしながら、この方法では、投稿の「この投稿を先頭に固定表示」を使い、その記事件数の最後の記事より古い日付の記事を、先頭に固定表示させてしまいますと、上記のコードでは10件の記事一覧になるはずが、11件・12件とはみ出してしまいます。
そこで、以下のようなソースコードを書くことで、この問題は解決することができます。
<?php $list_cnt = 10; $sticky = get_option('sticky_posts'); if ( !empty($sticky) ) $list_cnt -= count($sticky); $my_query = new WP_Query(array( 'posts_per_page' => $list_cnt, 'orderby' => 'date', 'order' => 'DESC' )); ?>
私は個人的には、投稿の「この投稿を先頭に固定表示」を使わないので、運用でカバーする方向が多かったのですが、汎用化する必要がある場合などは、上記のように、一旦変数に入れて記事表示件数を操作する必要がありますね。
WordPressテーマ制作者の人でもしこの問題に直面した人がいましたら、ぜひご参考ください。