
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アプリケーション開発”]