僕トク的なアレ

My Tips is here.

Wordpressで記事一覧の表示数を調整したい場合はquery_postsを使う。インスタント版

Wordpressでサイトやブログを構築していると、1ページあたりに表示する投稿記事数を制御したい場合がでてきます。
本来であれば、管理画面の[表示設定]から調整できるのですが、特定のページだけカスタマイズしたいケースも出てきたり。
その場合は、phpを直接いじりましょう。
WP独自関数であるquery_postsを使います。



引数部分(括弧内)にカテゴリや投稿数を指定することで、その直後に現れる投稿ループを操作する関数です。




<?php
    query_posts('&posts_per_page=20');   //20記事表示する
    if (have_posts()) : while (have_posts()) : the_post();
?>


ただしこの場合だと、以下の問題が出てきます。

  • カテゴリ毎に記事数を変更できない。
  • ページ送りが設定されていないので、常に最新の記事を読み込んでしまう。

なのでページ送りはグローバル変数である $query_stringと、カテゴリに関しては、関数「get_the_category」かつ引数「category_name」を使います。

それらを実装させたのがこちら。

<?php
    //グローバル変数$query_stringを取得
    global $query_string;
    $catinfo = get_the_category();
    $catname = $catinfo[0]->category_nicename;
    if($catname == カテゴリ名)
    {
        //$query_stringとクエリ部分は.で繋ぐ
        query_posts($query_string . '&posts_per_page=20');
    }
    if (have_posts()) : while (have_posts()) : the_post();
?>


これらを追加するファイル名は、記事一覧を表示する箇所ならどこでも大丈夫ですが、主に
index.php
category.php
tag.php
archive.php
などが一般的ですね。