
WordPress の管理画面で投稿一覧を更新日時順に並べ替える
今回は、WordPress 公式フォーラムで見つけた質問をネタに 1 記事書いてみます。
ダッシュボードで、投稿一覧、固定ページ一覧を表示させるとき、ヘッダの「日時」をクリックすると公開日時の昇順、降順でソートできます。 これを、公開日時ではなく更新日時で並び替える方法はありませんでしょうか。 特定の日以降に更新された投稿のみを削除する必要があり、かなりボリュームがあるので作業に困っています。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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 functionmy_posts_columns($defaults){ $defaults['post_modified']=__('Last updated'); return$defaults; } functionmy_postos_custom_column($column_name,$id){ if($column_name==='post_modified'){ echoget_the_modified_date('Y年m月d日'); } } // sort functionmy_posts_orderby_columns($vars){ if(isset($vars['orderby'])AND'post_modified'==$vars['orderby']){ $vars=array_merge($vars,array( 'orderby'=>'modified' )); } return$vars; } functionmy_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 に追加してください。 内容を凄く簡単に説明すると…
1 2 3 4 | functionmy_posts_columns($defaults){ $defaults['post_modified']=__('Last updated'); return$defaults; } |
カラムを追加する処理
1 2 3 4 5 | functionmy_postos_custom_column($column_name,$id){ if($column_name==='post_modified'){ echoget_the_modified_date('Y年m月d日'); } } |
追加するカラムに表示する内容の処理
1 2 3 4 5 6 | // 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); |
で、フックして実際に処理を走らせます。 これでカラムの追加は終わりです。 「追加して〜♡」 という依頼だけであれば、これで終わりですが… 今回はソートも出来ないとダメなので、もう少しコードをゴニョゴニョします。
1 2 3 4 5 6 7 8 | functionmy_posts_orderby_columns($vars){ if(isset($vars['orderby'])AND'post_modified'==$vars['orderby']){ $vars=array_merge($vars,array( 'orderby'=>'modified' )); } return$vars; } |
どのように並べ替えるか
1 2 3 4 | functionmy_posts_sortable_columns($sortable_column){ $sortable_column['post_modified']='post_modified'; return$sortable_column; } |
対象のカラムを指定
1 2 3 4 5 6 | // 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アプリケーション開発”]