はじめに
管理画面の投稿や固定ページ一覧で、更新日のカラムを追加し、更新日順でソートしたいケースがあります。
しかし、更新日でソートしても、必ずしも更新された投稿が一覧の先頭に並ぶとは限りません。
例えば、表1に示すように新規投稿は「投稿日」と「更新日」が同じになります。
| 投稿タイトル | 投稿日 | 更新日 | 備考 |
|---|---|---|---|
| 新規投稿 | 2025-07-08 | 2025-07-08 | 投稿日=更新日、新規投稿 |
| 更新済投稿 | 2025-07-01 | 2025-07-07 | 投稿日は古いが更新日が新しい投稿 |
そのため、更新日で並び替えても、更新された投稿だけが先頭に集まるとは限らず、視認性が低下する原因となります。
対策として、「更新された投稿」での絞り込み検索を追加します。
この記事では、この方法について説明します。
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
// 一覧にフィルターボタンを追加
add_action('restrict_manage_posts', function ($post_type) {
if (!in_array($post_type, ['post', 'page'], true)) {
return;
}
$selected = sanitize_text_field($_GET['filter_modified_posts'] ?? '');
?>
<select name="filter_modified_posts">
<option value="">全ての投稿</option>
<option value="1" <?php selected($selected, '1'); ?>>更新された投稿</option>
</select>
<?php
});
// 投稿クエリの取得条件を変更
add_filter('posts_where', function ($where, $query) {
global $wpdb;
// 投稿日と更新日の日付が異なる投稿のみを表示
if (
is_admin() &&
$query->is_main_query() &&
($_GET['filter_modified_posts'] ?? '') === '1'
) {
$where .= " AND DATE({$wpdb->posts}.post_date) != DATE({$wpdb->posts}.post_modified)";
}
return $where;
}, 10, 2);
さいごに
今回紹介した方法を使えば、投稿、固定ページ一覧で「更新された投稿」の絞り込みを簡単に実現できます。
絞り込み条件を利用すれば、投稿日と更新日が異なる投稿を素早く確認でき、効率的な投稿管理が可能です。

