web-dev-qa-db-ja.com

コンテキスト(ホームページ、検索、アーカイブなど)に応じて、ページごとに異なる投稿数を表示する

閲覧設定では、すべてのコンテキストで表示される投稿数に影響する表示される投稿数を設定するための場所があります。代わりにホームページに一定の数の投稿を表示し、アーカイブ、検索結果などのページには異なる数の投稿を表示します。

reading-settings-blog-pages-show-at-most-per-page

テーマファイルを編集し、そこでクエリパラメータを変更することでこれを実現できることはわかっていますが、簡単な設定ページに簡単にアクセスできるようにしたいと思います。昔、私はこれをしたプラグインに出会いました、しかし私は今それを見つけることができません。

誰もがこれを行うためのプラグイン、あるいは同じことを達成するためにfunctions.phpに入れることができる関数さえ知っていますか?

21
Doug

プラグインでこれを行うための最善の方法は、pre_get_postsアクションフックが見つかったときに次のサンプル関数を実行することです。 $wp_queryオブジェクトが利用可能です。つまり、コンディショナルタグは利用可能ですが、WordPressがポストを取得する前に、つまり、query_posts()が2番目のクエリを追加するのではなく、最初のクエリの実行前にクエリ変数を変更します。テーマファイル.

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');
23
kevtrout

query_postsを使用してカスタムループを作成し、is_home、is_archiveなどで投稿数を指定できます。

query_postsと一緒の単純なif文

0
chrismccoy