WordPress の管理画面で投稿一覧を更新日時順に並べ替える

今回は、WordPress 公式フォーラムで見つけた質問をネタに 1 記事書いてみます。

ダッシュボードで、投稿一覧、固定ページ一覧を表示させるとき、ヘッダの「日時」をクリックすると公開日時の昇順、降順でソートできます。 これを、公開日時ではなく更新日時で並び替える方法はありませんでしょうか。 特定の日以降に更新された投稿のみを削除する必要があり、かなりボリュームがあるので作業に困っています。

ダッシュボードで更新日順に並べたい

ソースコード

if ( ! function_exists( 'my_posts_columns' ) AND ! function_exists( 'my_postos_custom_column' ) AND ! function_exists( 'my_posts_orderby_columns' ) AND ! function_exists( 'my_posts_sortable_columns' ) ) {
// add columns
function my_posts_columns( $defaults ) {
$defaults['post_modified'] = __( 'Last updated' );
return $defaults;
}
function my_postos_custom_column( $column_name, $id ) {
if( $column_name === 'post_modified' ){
echo get_the_modified_date( 'Y年m月d日' );
}
}
// sort
function my_posts_orderby_columns( $vars ) {
if ( isset($vars['orderby']) AND 'post_modified' == $vars['orderby'] ) {
$vars = array_merge($vars, array(
'orderby' => 'modified'
));
}
return $vars;
}
function my_posts_sortable_columns( $sortable_column ) {
$sortable_column['post_modified'] = 'post_modified';
return $sortable_column;
}
// sort request
add_filter( 'request', 'my_posts_orderby_columns' );
// Post
add_filter( 'manage_posts_columns', 'my_posts_columns' );
add_action( 'manage_posts_custom_column', 'my_postos_custom_column', 10, 2 );
add_filter( 'manage_edit-post_sortable_columns', 'my_posts_sortable_columns' );
// Page
add_filter( 'manage_pages_columns', 'my_posts_columns' );
add_action( 'manage_pages_custom_column', 'my_postos_custom_column', 10, 2 );
add_filter( 'manage_edit-page_sortable_columns', 'my_posts_sortable_columns' );
}

上記のソースコードをお使いのテーマの functions.php に追加してください。 内容を凄く簡単に説明すると…

function my_posts_columns( $defaults ) {
$defaults['post_modified'] = __( 'Last updated' );
return $defaults;
}

カラムを追加する処理

function my_postos_custom_column( $column_name, $id ) {
if( $column_name === 'post_modified' ){
echo get_the_modified_date( 'Y年m月d日' );
}
}

追加するカラムに表示する内容の処理

// Post
add_filter( 'manage_posts_columns', 'my_posts_columns' );
add_action( 'manage_posts_custom_column', 'my_postos_custom_column', 10, 2 );
// Page
add_filter( 'manage_pages_columns', 'my_posts_columns' );
add_action( 'manage_pages_custom_column', 'my_postos_custom_column', 10, 2 );

で、フックして実際に処理を走らせます。 これでカラムの追加は終わりです。 「追加して〜♡」 という依頼だけであれば、これで終わりですが… 今回はソートも出来ないとダメなので、もう少しコードをゴニョゴニョします。

function my_posts_orderby_columns( $vars ) {
if ( isset($vars['orderby']) AND 'post_modified' == $vars['orderby'] ) {
$vars = array_merge($vars, array(
'orderby' => 'modified'
));
}
return $vars;
}

どのように並べ替えるか

function my_posts_sortable_columns( $sortable_column ) {
$sortable_column['post_modified'] = 'post_modified';
return $sortable_column;
}

対象のカラムを指定

// sort request
add_filter( 'request', 'my_posts_orderby_columns' );
// Post
add_action( 'manage_posts_custom_column', 'my_postos_custom_column', 10, 2 );
// Page
add_filter( 'manage_edit-page_sortable_columns', 'my_posts_sortable_columns' );

で、フックして実際に処理を走らせます。 以上になります。

こちらのプラグインを使用すれば、もっと簡単にカスタマイズ可能です。

[appbox wordpress codepress-admin-columns]

ご注意

ソースコードを提示していながら恐縮なのですが、僕自身、PHP や WordPress 知識がかなり浅いです。 ご使用いただく際は、お知り合いの凄い人にコードレビューをしていただく事をオススメします。

参考サイト

あとがき…

今回のは実案件でも結構必要とされるのではないでしょうか? 今後使う可能性もあるし、管理画面のカスタマイズは知識がないのでトライしてみました。誰かのお役にたてれば幸い。

それでは本日はここまで。

[amazonjs asin=”4798130931″ locale=”JP” title=”一歩先にいくWordPressのカスタマイズがわかる本”]

[amazonjs asin=”4873116783″ locale=”JP” title=”詳解 WordPress”]

[amazonjs asin=”4873117062″ locale=”JP” title=”WordPressによるWebアプリケーション開発”]

この記事が気に入ったら
いいね ! しよう

Twitter で

Written by くっくる

WordPressを使ったウェブサイトの構築・HTMLコーディングの受託案件を中心に埼玉県にて活動中。バイラルメディア風にFacebook pageのいいね!ボタンを設置できるVA Social Buzzをはじめ、複数のWordPressプラグインを公開している。共著書として「エンジニアのためのWordPress開発入門」がある。

View all author posts →

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください