【WordPress】管理画面の投稿一覧に最終更新日を表示しソート可能にする方法

WordPressの管理画面で投稿一覧を効率的に管理するために、「最終更新日」を表示し、そのカラムでソートできるようにする方法を紹介します。このカスタマイズにより、コンテンツの更新履歴を簡単に追跡し、管理がしやすくなります。

最終更新日カラムを投稿一覧に追加する

まず、最終更新日を表示するために、投稿一覧に「最終更新日」というカラムを追加します。以下のコードをテーマの functions.php ファイルに追加してください。

// 投稿一覧に最終更新日カラムを追加
function add_last_updated_column($columns) {
    $columns['last_updated'] = __('最終更新日');
    return $columns;
}
add_filter('manage_posts_columns', 'add_last_updated_column');

// 最終更新日カラムにデータを表示
function show_last_updated_column_content($column, $post_id) {
    if ($column === 'last_updated') {
        $last_updated = get_the_modified_date('', $post_id);
        echo esc_html($last_updated);
    }
}
add_action('manage_posts_custom_column', 'show_last_updated_column_content', 10, 2);

このコードは、投稿一覧に「最終更新日」カラムを追加し、各投稿の最終更新日を表示します。

最終更新日カラムでソート可能にする

次に、最終更新日でソートできるようにするために、追加のカスタマイズが必要です。以下のコードを同じ functions.php ファイルに追加します。

// ソート可能なカラムを追加
function sortable_last_updated_column($columns) {
    $columns['last_updated'] = 'last_updated';
    return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'sortable_last_updated_column');

// ソートのためのクエリ変更
function sort_by_last_updated_column($query) {
    if (!is_admin()) {
        return;
    }
    $orderby = $query->get('orderby');

    if ('last_updated' == $orderby) {
        $query->set('meta_key', '_edit_last');
        $query->set('orderby', 'meta_value_num');
    }
}
add_action('pre_get_posts', 'sort_by_last_updated_column');

このコードは、最終更新日カラムをソート可能にし、そのカラムで投稿を並べ替えるためのクエリ設定を行います。

管理画面で確認する

コードを追加した後、WordPressの管理画面の「投稿」セクションに移動し、「最終更新日」カラムが追加されていることを確認します。カラムのヘッダーをクリックすることで、最終更新日でソートできることが確認できます。

まとめ

このカスタマイズにより、投稿の更新履歴を簡単に追跡でき、管理の効率が向上します。ぜひ、試してみてください。