PR

ワードプレスの記事一覧を更新日時順で表示する方法!カスタマイズも簡単にできる

WordPressの記事一覧は、デフォルトでは「投稿日(公開日)順」に並んでいます。

過去記事のリライトに力を入れているブログの場合、最新の情報を読者に届けやすくするために「更新日時(最終更新日)順」へ変更するのが最新状況が分かりやすくて効果的ですね。

  • 方法: テーマの functions.php に数行のコードを追記するだけ。
  • メリット: プラグイン不要でサイトが重くならない。
  • ポイント: 全ページ一括だけでなく「ホームだけ」といった条件分岐も可能。

まずは、サイト全体の記事一覧(メインクエリ)を更新日時順にする基本のコードを紹介します。以下のコードを functions.php の末尾に追記してください。

Auto
// 記事一覧を更新日時順に変更
function my_sort_order_by_modified( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        $query->set( 'orderby', 'modified' );
        $query->set( 'order', 'DESC' );
    }
}
add_action( 'pre_get_posts', 'my_sort_order_by_modified' );
Jin Simple Code Block

この記事では、このコードの具体的な使い方や、特定のページ(ホームやカテゴリ)だけに適用するカスタマイズ方法を詳しく解説します。

関連)
管理画面の記事一覧に「更新日」の列を追加する方法はこちら

更新日時順にする方法

実際、上のコードを functions.php に追記してみます。

以下のCocoonの例ですが、
①「外観」⇒②「テーマファイルエディタ」⇒③「テーマのための関数」を選び、functions.phpの最後に追記します。

最後に ⑤「ファイルを更新」で保存。

ワードプレスの記事の一覧表示を記事を修正した「更新日」の順で表示するには、以下のコードを「テーマのための関数」(functons.php)に追加するだけ。

実際の動作を確認してみましょう。

実際の動作

上で見たコードを「テーマのための関数」に追加すると、以下のような表示になります。

(分かりやすいように記事のタイトルに投稿日を入れている)

元々公開日順で記事の一覧が表示されていたところ(左)、更新日順の一覧に変わっているのが分かりますね(右)。

コードの簡単説明

コードをこうしたい、と少しカスタマイズしたい場合もあると思いますので、上で見たコードはどうなっているか、ざっくり見ておきましょう。

  • ①「! is_admin()」
    • 「管理画面以外(サイトの表示側)の場合なら」、という意味
  • ②「$query->is_main_query()」
    • 「メインの記事一覧を要求している場合なら」という意味
    • ここで「メイン」というのは、サイドバーやフッターにある『人気記事一覧』や『新着一覧』ではなく、記事表示部分での『記事一覧(投稿の一覧)』ということ
  • ③「$query->set( 'orderby', 'modified' )
    • 「並び順(orderby)を更新日(modified)にしてね」という意味
  • ④「$query->set( 'order', 'DESC' )」
    • 「新しい順(DESC)で並べてね」という意味

③と④をセットにすることで、
「更新日が新しい順に並べる」という命令になります。

データベースに対し、

  • 管理画面以外で記事一覧の要求では、
  • ”更新順で頂戴”!

という形になりますね。

上で見たコードでは、特定の場所の「記事一覧」ではないことから、

  • 「ホームの記事一覧」
  • 「カテゴリページの記事一覧」
  • 「月日別のページの記事一覧」
  • 「タグページの記事一覧」
  • ・・・・

などなど、全ての記事一覧で更新日順に変わる、となります。

「いや、こうした場合は除外したい」などでは、①の「is_main_query()」「ホームだけにする」など条件を変えればOK。

条件を変えたい場合

全てのページを対象とするのではなく、
「ホームだけ」や「特定のページだけ」更新日順にしたい場合は、条件分岐(ifの部分)を書き換えます。

この時、管理画面の記事一覧は更新日順に変更したくない場合は、「! is_admin()(管理画面ではない場合)」という条件は残しておくのがポイント。

以下は、「ホーム」または「カテゴリーページ」を更新順にする場合の例。

Auto
// 1)ホーム(トップページ)だけ更新順にする場合
if ( ! is_admin() && $query->is_main_query() && $query->is_home() )

// 2)ホームまたはカテゴリーページを更新順にする場合
if ( ! is_admin() && $query->is_main_query() && ( $query->is_home() || $query->is_category() ) )
Jin Simple Code Block

※「||」は「または」という意味

この例では、以下となってます。

  • (サイドバーではなく)メインであり、かつ、ホームまたはカテゴリーページの場合

となってます。

逆に、「カテゴリーページだけ」は公開日順のままにしたい(更新順から除外したい)という場合は、以下のように「!(〜ではない)」を使って書きます。

Auto
// 1)カテゴリーページは除く(それ以外を更新順に)
if ( ! is_admin() && $query->is_main_query() && ! $query->is_category() ) 

// 2)日付別ページは除く(それ以外を更新順に)
if ( ! is_admin() && $query->is_main_query() && ! $query->is_date() )
Jin Simple Code Block

※「&&」は「かつ」、「!」は「〜ではない」という意味

ここで使っている $query->is_home()$query->is_category() は、特定のページかどうかを判定する「条件分岐タグ」のメソッド。

※ カスタマイズがおすすめな理由:
記事の並び替えプラグインは直感的ですが、記事数が増えるほどデータベースへの負荷が高まり、表示速度を低下させる原因にもなる。そこで今回のように functions.php で制御する方法はデータベースへの負荷を避けることにもなり、SEOの重要指標である「ページ表示速度」を維持できる最もクリーンな手法となる。

なお、条件分岐タグの全種類を詳しく知りたい方は、公式の「条件分岐タグ – WordPress Codex 日本語版」を参照してください。

微修正でトップに来るのを防ぐには?

今回のように、記事一覧を更新日時順にすると、「誤字脱字を1文字直しただけ」の記事まで先頭に浮上します。

運営者視点で、それでもOKならそのままですが、読者にとって価値が変わらない微修正で順位が入れ替わるのは、あまり好ましくない、という考え方もありますね。

こうしたことを考えると、
記事を更新する際に「更新日を変更するかどうか」を選択できる仕組みも入れていくのが良いと思います。

  1. プラグインを利用する:
    「WP Last Modified Info」等で更新日の保持を選択可能にする。
  2. カスタムフィールドを活用する:
    更新日を更新しないチェックボックスを自作する。

この対応はまた別記事で見て行きましょう。

今回のポイント

WordPressの記事一覧を「更新順」に変更するポイントは以下の通り。

  1. 基本のカスタマイズ: functions.php に数行追加するだけで、プラグインなしで更新順に変更可能。
  2. 柔軟な制御: 条件分岐(is_home()など)を使えば、特定のページだけ適用することもできる。
  3. シンプルさを求めるなら: 今回紹介したコードによるカスタマイズが最も軽量
  4. 確実性と利便性を求めるなら: 今回のコードが今一機能しない場合、「WP Last Modified Info」などのプラグイン導入を検討

大切なのは「読者にとって新鮮で有益な情報をトップに届ける」という視点。

ご自身のブログの更新スタイルに合わせて、最適な方法を取り入れてみてくださいね!

またネットで収益化を目指したい!ブログで収益化をしたいがやり方が分からない、という場合には、以下のメルマガにも登録してみてください。

早期退職して海外で奮闘する JIN のメールマガジン

時間や場所に縛られず稼いだJINが教える

~ 最短で月収10万円稼げるようになる方法 ~

お名前/ニックネーム

隣のあの人にも、思わず教えたくなる秘密

配信停止は、いつでもできます

迷惑メールは一切配信されませんので、ご安心くださいね

自らの手で未来を変える力を手に入れる!

コメント