Wordpressでトップページやカテゴリーページに表示される記事一覧の表示順を変更する方法です。
記事の表示順は管理画面からは変更することは出来ないので、プラグインを使用する方法と、functions.phpを使用する方法の2つをまとめました。
プラグインでは自由に並べ替えができ、functions.phpならorderbyに使用できるパラメーター順に記事を並べ替えることが出来ます。
プラグインはドラッグ&ドロップで変更なのでfunctions.phpがお勧めです。
この記事の目次
WordPressで投稿の表示順を変更する方法
Wordpressの記事一覧はデフォルトで新着順(日付順)に並ぶようになっています。
サイトによってこの投稿の表示順を変更したい場合があると思いますが、残念ながらWordpress5.9時点では並べ替え機能は実装されていません。
管理画面に項目は存在するのですが、現状では「最新の投稿」しか選べない形です。
ただfunctions.phpにコードを追記したり、並べ替え用のプラグインを使用することで比較的簡単に投稿の表示順を変更することが出来ます。
この2つのやり方をまとめました。
それぞれ以下の特徴があります。
- functions.php使用:orderbyのパラメータ順に並べ替え(一括変更)
- プラグイン使用:投稿をドラッグ&ドロップで並べ替え(個別変更)
プラグインは定番の「Intuitive Custom Post Order」というプラグインを使った方法をご紹介します。
記事の表示順を変更するだけならfunctions.phpを使う方法がオススメですが、初心者の方や、細かい並び替えをしたい人はプラグインを使用しましょう!
長くなる項目については別記事に分けてますので、適宜そちらもご覧下さい。
では順番に見ていきましょう・w・
functions.phpで投稿の表示順を変更する
まずはfunctions.phpにコードを追記する方法からご紹介します。
Wordpressにはpre_get_posts
という便利なフィルターフックがありますのでこれを使えば簡単に記事の表示順を並べ替えることが出来ます。
並べ替えに使用できる主な項目(パラメータ)は以下です。
- 日付順
- 投稿ID順
- 作成者順
- タイトル順
- 更新日順
- 親ページのID順
- ランダム順
- コメント数順
などなど…
これらの項目順に「昇順」「降順」を選んで並べ替えることが出来ます。
中でも「日付順」「更新日順」「ランダム順」は使い勝手が良く、人気ですね。
後述するプラグインの「Intuitive Custom Post Order」を使う方法は1つ1つ手動で記事を並べ替えれるのに対し、functions.phpを使う方法は一括変更です。
プラグインを使う方法よりもセキュリティが脆くならず、軽量で保守性も高いので初心者の方で“functions.phpが分からない!”という方も是非この機会にチャレンジしてみて下さい。
関連記事
functions.phpについて詳しくはこちら。
WordPressのfunctions.phpとは?場所と編集方法、コードの書き方を初心者向けに解説します。
functions.phpに追記するコード
この記事ではコードの説明は割愛します。
記事の表示順を変更するにあたり、実際に使用するコードが以下です。
//記事の表示順変更 function sortpost($query) { if(is_admin() || !$query->is_main_query()){ return; } //ASC:昇順、DESC:降順 $query->set('order', 'DESC'); //orderbyで何順に並べ替えるか指定 $query->set('orderby', 'modified'); } add_action('pre_get_posts', 'sortpost');
こちらのコードがベースとして使用するコードになります。
(コメントや関数名は変更してもOKですが、if文は削除しないようにご注意を。)
コードのポイントは$query->set(~);
という箇所2つで、この部分を変更することによって並べ替えの順番や項目を変更することが出来ます。
この後のorderとorderbyのパラメータ名の対応表を参考に$query->set(~);
の2カ所を自分が並べ替えたいものに変更して使って下さい。
orderで昇順か降順かを指定する
まずorderのパラメータ名についてです。
具体的にはコードの以下の部分にこれを指定すればOKです。
$query->set('order', 'ここにorderのパラメータ名');
orderの対応表 | |
パラメータ名 | 並び替え順序 |
ASC | 昇順 |
DESC | 降順 |
WordpressではorderにデフォルトでDESC:降順が指定されています。
新着順→古い順に変更したい時はこのorderにASC:昇順を指定するだけでOK!
昇順と降順がどちらか分からない方はASCとDESCの両方を試し、自分が並び替えたい順番になる方を指定するという感じで良いかと思います。
orderbyで何で並べ替えるかを指定する
続いてorderbyのパラメータ名についてです。
具体的にはコードの以下の部分にこれを指定すればOKです。
$query->set('orderby', 'ここにorderbyのパラメータ名');
orderbyの対応表 | |
パラメータ名 | 並び替え項目 |
none | 順序なし |
ID(大文字) | 投稿ID順 |
author | 作成者順 |
title | タイトル順 |
date | 日付順 |
modified | 更新日順 |
parent | 親ページID順 |
rand | ランダム順 |
comment_count | コメント数順 |
Wordpressではorderbyにデフォルトでdate:日付が指定されています。
各項目でどのように並べ替えられるかを画像にしようと思ったのですが、これは実際に試していただいた方が速くて確実だと思うのでやめました!
あと注意点として「rand:ランダム」にした時なのですが、その仕様上トップページやカテゴリーページの1ページ目と2ページ目に同じ記事が出る可能性があります。
これに対応する方法は長くなるので別の記事(↓)にしてます。
以上、orderとorderbyの組み合わせによって表示順を色々変更することが出来ます。
例としてWordpressの初期値をコードにしてみるとこんな感じです…
//Wordpressの初期値(新着順)はこんな感じの指定 function sortpost($query) { if(is_admin() || !$query->is_main_query()){return;} $query->set('order', 'DESC'); $query->set('orderby', 'date'); } add_action('pre_get_posts', 'sortpost');
orderにDESC:降順が、orderbyにdate:日付が入っているので「日付の降順」となり、新着順に記事が表示されるようになっているという事です。
orderbyに指定できるパラメータ名にはmeta_value_num
など、上記以外のものもありますが、用途が特殊なので詳しく気になる方は追加検索して下さい。
もっとも「none」や「ID」にしたところで初期設定の「date」と並び順がほとんど変わらないので、使用頻度が高いのは「modified」か「rand」あたりでしょう…
プラグインで投稿の表示順を変更する
functions.phpで並べ替える方法が使えない方や、細かく記事を並べ替えたい人は「Intuitive Custom Post Order」というプラグインがオススメです。
記事の表示順を変更するプラグインとしては最有力なプラグインです。
他のプラグインもあるにはありますが、使うならこのプラグインが安定でしょう。
Intuitive Custom Post Orderのインストール
執筆時、Intuitive Custom Post Orderは管理画面からインストールできました。
管理画面左メニュー>プラグイン>新規追加
に進み、検索欄に「Intuitive Custom Post Order」と入力。
プラグインが出てきたら今すぐインストール&有効化しましょう。
検索に出てこない場合は手動でDL&UPしましょう。
一応プラグインの公式ページもリンクしておきます。
外部リンク
【Intuitive Custom Post Order】
Intuitive Custom Post Order – WordPress plugin | WordPress.org
Intuitive Custom Post Orderが効かない?
Intuitive Custom Post Orderですが、有効化してもそのままでは使えませんでした。
記事の表示順を変更するには設定画面から有効化しないとダメです。
プラグインを有効化すると管理画面の設定に「並び替え設定」という項目が出現するので、ここから並び替えたいページの種類を選んでチェックを入れて有効化します。
チェックを入れていないとドラッグ&ドロップで並び替えることが出来ません。
並び替え対象に出来るページの種類は5種類。
カスタムタクソノミーにも対応しているとのことですが、普通の?記事は「投稿」なのでこちらにチェックを入れておけば良いでしょう。
ドラッグ&ドロップで投稿を並び替える
設定を変更したら後は「投稿一覧」からドラッグ&ドロップで好きな順番に入れ替えるだけでOK!直感的に好きな順番に変更することが出来ます。
なお、プラグインには「保存」ボタンのようなものは存在しません。
ドラッグ&ドロップで入れ替えた瞬間その順番が反映される感じでした。
また、プラグインを削除すれば元の並び順に戻りました。
余談ですが、JavaScriptを使って並び替えを行っているらしく、サイト環境によってはテーマや他のプラグインと干渉して動かない事があるようです…
まとめ
以上、Wordpressで投稿の表示順を色々な並び方に変更する方法でした。
記事の並べ替えはfunctions.phpを使う方法が圧倒的にオススメです。
新しい順、古い順、更新日順、ランダム表示が良く使いそうな順番だと思いますが、いずれもfunctions.phpで一括対応でき、専用のフックも用意されていますので…
Intuitive Custom Post Orderの最終更新日が11カ月前なのも気になりました。
“記事の表示順変更”という大切な処理ということもあり、プラグインを使っているといつ不具合が起きるかも分かりません。
新着順も良いですが、リライトした記事がもう1度トップページに表示されるという事もあって、当サイトは「更新日順」が一番しっくりきています。
まとめサイトなんかだとランダム表示も面白いですね!
この記事を参考にご自身のサイトに合う表示順に変更していただければと思います。
ではではこのへんで・w・