管理画面の投稿が日付順に並ばない?原因と解決方法を解説しました
今回は、WordPressの管理画面で「投稿が日付順に並ばなくなってしまった」というご相談をいただいた際のお話です。
一覧画面を見ると、
- 新しい記事が上に来ない
- 日付が前後して表示される
- 並び順がバラバラで気持ち悪い
といった状態になっており、管理画面がとても見づらくなっていました。
一見すると不具合やプラグインの影響のようにも見えるのですが、実はこれ、WordPressの仕様によって起きる現象でした。
今回は、その原因と解決方法についてご紹介します。
原因はCPT UIやテーマではありませんでした
まず確認したのが、カスタム投稿タイプの設定です。
今回のサイトでは「CPT UI」を使って投稿タイプを作成していましたが、設定内容を確認しても、
- 並び順(orderby)の指定
- 更新日順にする設定
といったものは一切ありませんでした。
また、functions.php 内にも並び順を変更するコードはなく、テーマやプラグインによる不具合ではないことが分かりました。
実はWordPress管理画面の“仕様”
原因は、WordPress管理画面の投稿一覧の並び順にありました。
管理画面の「日付」列は、一見すると
「公開日順で並んでいる」
ように見えますが、内部的には以下の情報が混在して使われています。
- 公開日(post_date)
- GMT基準の公開日(post_date_gmt)
- 更新日(post_modified)
そのため、
- 一度予約投稿した記事
- 公開後に日付を変更した記事
- 後日編集した記事
などが混ざると、見た目と実際の並び順が一致しなくなることがあります。
記事数が増えてくると、特にこの症状が出やすくなります。
実際に起きていた状態
例えば、
- 1月26日に編集した過去記事
- 1月23日に新規公開した記事
- 1月20日に予約投稿を解除した記事
このような記事が混在すると、日付表示は新しいのに下の方にあったり、古い記事が突然上に来たりといった、とても分かりづらい一覧画面になってしまいます。
解決方法:並び順を明示的に固定する
この問題は、functions.php に以下のコードを追加することで解消できます。
add_action('pre_get_posts', function ($query) {
if (
is_admin() &&
$query->is_main_query() &&
$query->get('post_type') === 'sample_post'
) {
$query->set('orderby', 'date');
$query->set('order', 'DESC');
}
});
※ sample_post の部分は、カスタム投稿タイプのスラッグ名に合わせて変更します。
この対応でどう変わる?
この設定を行うことで、
- 管理画面の投稿一覧が常に公開日順になる
- 更新日や予約投稿の影響を受けない
- 記事数が増えても並びが崩れない
といった状態になります。
見た目だけでなく、日々の更新作業のストレスも大きく軽減されます。
まとめ
今回のように、「特に設定を変えていないのに並び順がおかしい」という場合でも、実際にはWordPressの仕様によって起きているケースが少なくありません。
特に、
- カスタム投稿タイプを使っている
- 長期間サイトを運用している
- 予約投稿や再編集をよく行う
というサイトでは、よく発生します。
管理画面の使いやすさは、更新のしやすさや作業効率に直結します。
もし同じような症状でお困りの場合は、一度並び順の設定を見直してみるのもおすすめです。
🐾 さぽたん日記からのご案内
ホームページを育てるお手伝い
ホームページは作って終わりではなく、
小さな修正や改善を重ねながら育てていくものです。
日々の対応内容を「さぽたん日記」でご紹介しています。