Wordpressの投稿を古い順に表示変更する方法。[functions.php使用]

Wordpress-投稿を古い順に変更する_eyecatch

Wordpressの投稿(記事)一覧を古い順に並べ替える方法です。

デフォルトではトップページやカテゴリーページの記事は新着順に表示されますが、サイトによっては古い記事から順番に表示したいという事があります。

この表示順は残念ながら管理画面からは変更できませんが、functions.phpを使えば簡単なコードで古い順に変更することができます。

プラグインもありますが、この操作はfucntions.phpを使う方がお勧めです。

投稿(記事)一覧を古い順に並べ替える

Wordpressの投稿一覧は新着順(日付順)というのが標準の仕様です。

テーマによっては表示順を並べ替えることが出来るものもありますが、管理画面からトップページやカテゴリーページの表示順を変更することは出来ません。

Wordpress-投稿を古い順に変更する_001

管理画面からは変更不可

この表示順を古い順に変更するにはプラグインを使う方法とfunctions.phpを使う方法がありますが、Wordpressにはpre_get_postsという便利なフックがありますので、こちらを使えばorderやorderbyを使って簡単に並べ替えることが出来ます。

プラグインは使い勝手がイマイチということもありますが、メインクエリを操作するものなので出来るだけfunctions.phpを使うようにしましょう。

では早速コードのご紹介!動作については後回しにします。

functions.phpに追記するコード

表示順を古い順(日付)に変更するコードがこちらです。
子テーマなどのfunctions.phpに以下のコードを追記すればOKです。

//記事を古い順に並べ替える
function sortpost_old($query) {
    if(is_admin() || !$query->is_main_query()){
        return;
    }
    $query->set('order', 'ASC');
}
add_action('pre_get_posts', 'sortpost_old');

この手の記事はコードが分かればよいと思いますが、簡単に解説します。

まず、if文ですがこれは「管理画面またはメインクエリ以外の時は何もしない」という記述です。なくても一応動きますがややこしくなるので書いた方が良いです。

その下の$query->set('order', 'ASC');の部分で投稿を古い順に変更しています。

Wordpressの場合はorderの初期値にDESC(降順)が入っているので、投稿日の降順という事で"新着順"に表示されるようになっています。
また、orderbyの初期値はdateなので指定し直す必要はありません。

~WordPressのデフォルト指定は以下のイメージ~
//ASC:昇順、DESC:降順
$query->set('order', 'DESC');
//orderbyで何順に並べ替えるか指定
$query->set('orderby', 'date');

文章にするとややこしいですが、Wordpressのデフォルト指定はコードにすると上記のような感じだと言えます。これをASC(昇順)に変更すれば古い順にできます。

必要に応じてis_category()などで条件分岐を付ければ、カテゴリーページだけ記事を古い順に並べ替えたりすることもできます。

コードの動作について

functions.phpにコードを追記したら動作確認です。

まず管理画面から…

Wordpress-投稿を古い順に変更する_002

管理画面の並びはこんな感じ

if文で管理画面の時は何もしないという条件分岐を付けているので、管理画面の投稿は今まで通り新着順で表示されます。

そして記事一覧ページは日付が古い記事から順番に表示されるようになります。

テストサイトなのでWordpressのインストール時に始めからあり一番古い投稿であるHello Worldが先頭に来ていました・w・

pre_get_postsはほとんどのテーマで動作すると思いますが、もしかしたら意図した動作にならないテーマもあるかもしれません…
原因は無数にあるので難しいですが、new WP_Queryを使っても同じようなことが出来るので、ダメな方はそちらも調べていただければと思います。



まとめ

functions.phpを使ってWordpressの投稿を古い順に変更する方法でした。

記事の並び替えで代表的なプラグインには「Intuitive Custom Post Order」というものがありますが、ドラッグ&ドロップで並べ替えるものなので一括で変更したい時は使いにくいです。

プラグインが増えるとセキュリティ、サイト速度、メンテナンス性…と色々良くないので、表示順の変更程度ならfunctions.phpを使いましょう!

-WordPress
-

site-logo
ありがとうございました!
良かったらシェアしてネ・w・
当サイトはピンバックを受け付けます。
  • この記事を書いた人
ザキ

ザキ

X:@sologaku

プログラミングに興味があり情報系の大学を卒業。

新卒で社会人になるも数年で退職し今はフリーランスとして生きています。

少しでも誰かの役に立てれば...と思い、当サイトでIT関係のハウツーを発信しています。


ソロ学運営者:ザキの自己紹介

© 2020 sologaku