2020年1月19日ツイートシェアB!はてブポケットWordPressのメインループのクエリをfunctions.phpから書き換える方法です。一般的にはテンプレートを用意してWP_Queryで書き換えることが多いですが、そんな手間をかけなくてもサクッとfunctions.phpで書き換えることも可能なのです。おわりメインクエリを書き換える方法それではメインクエリをfunctions.phpから書き換えてみます。書き換えるには、pre_get_posts()というフィルターフックを使います。以下の例は、クエリの中のposts_per_pageを上書きして6にしています。これは「1ページあたりの表示件数を6件に変更する」とう指定になります。書き換える基本が分かったところで、ありがちな書き換えのパターンを見ていきましょう!ケース別のメインクエリ書き換える方法ケース別のメインクエリの書き換えパターンです。基本的には特定の条件をifの条件分岐で制限して、その時だけ書き換えられるような動きにする形となります。)で検索一覧かどうかを判定して、投稿タイプを「投稿」だけに書き換えています。);検索結果に投稿タイプも含めたい先ほどと似ていますが、他の投稿タイプを加えるパターンです。当たり前ですが投稿タイプも自由に選択できるということですね。配列のようにしていくつでも追加することができます。your-post-type-nameはご自身が追加した投稿タイプ名です。);特定の投稿タイプ一覧だけ表示件数を変更したいis_post_type_archiveで特定の投稿タイプの一覧を絞ることができます。);ちなみに、-1にすると、「制限なし」ですべての投稿が表示されるようになります。複数の条件を書き換えたい例として1つのパラメーターの値の書き換えしか行っていなかったので念のための紹介です。実は、こままだとオリジナルで作成したクエリにも影響が及んでしまいます。オリジナルとはWP_Query()で独自に作ったサブループと呼ばれるループです。サブループについては以下で詳しく解説しています。WordPressの任意のループ(サブループ)を作る方法と覚えておきたい指定方法サブループは意図的に作っているので変更対象としてほしくないはずです。サブループを書き換え対象から除外するという記述を先頭に入れてあげると意図しない動きをさせずに済みます。);$query->is_main_query()がメインループかどうかを判定しています。メインループでなければ、そのままのクエリを返すと言う処理ですね。サブループの作り方と似ている$query->set();の引数でメインループの書き換えを行っていますが、これはサブループを作る時のやり方とほとんど同じです。要するに、WP_QueryのCodexの記載されているループのクエリには作り変えられるということです。日本語版サイトが複雑になってくると、「○○の条件では、ちょっとループを変えたい...」みたいなことが起きがちです。メインループはpre_get_postsのフィルターから条件に応じてifで分けてあげれば作り直せることを覚えておけば、WordPressのカスタマイズの幅も広がっていくかと思います。@haniwa008WordPressのメインループの内容をfunctions.phpから書き換える方法でした。メインループを書き換えるたびにテンプレートを作成するのも手間ですので、functions.phpからサクッと書き換えられることを覚えておくと案件を進めるのが楽になるかもしれません。リンクこのページが役に立ったらいいね!お願いします運営の励みになります...。同じカテゴリーの一覧を見る次の記事WordPressで自作プラグインを作り方!公式にアップしなくてもプラグ...前の記事WordPressの管理画面をカスタマイズする方法!お客様ごとに使いやす...はにわまんWordPressが好きなフリーのWebコーダー。300件以上のWordPressカスタマイズを対応してきました。