Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

WP管理画面を使いやすく~カスタムフィールド数値ソート・余計な余計な列を非表示(manage_edit-post_sortable_columnsフックなど)

更新: 2024/02/12 2400文字

WP管理画面を使いやすく~カスタムフィールド数値ソート・余計な余計な列を非表示

今回は、カスタムフィールド表示などをつけてごちゃごちゃしてきたWP管理画面を整理してつかいやすくします。組み込みの『manage_edit-post_sortable_columns』などにフックをかける感じで、数値ソート・余計な列を非表示などをとりいれるカスタマイズを行っていきます。さっそくプログラムや表示例なども確認していきましょう。

今回の対応~たいして使いみちがなかったカスタムフィールド活用で、WP管理画面を使いやすく、かつ、余計な列は非表示

ではさっそく、今回のエディットで改善したいポイントを見ていきましょう。 つけるサイトは、管理人が以前つくった『ss-freemusic(著作権フリー曲サイト)』。最近では、音楽発信のプラットフォームというより、完全にWordPressサイト改造の被験者になっていますが(笑)、まあ大丈夫でしょう。

以前は『カスタムフィールドでBPMを管理・管理画面にも表示』というのをやりました。その影響で列が増えてしまい、『せまくなった分、タイトルが縦長で見にくい』みたいな問題がでました。これを解消しつつ、『カスタムフィールドに数値を使ったので、ソートもやってみる』という形で対応していきます。

WP管理画面カスタムフィールド数値ソート・余計な列を非表示

プログラム例(functions.php)

以前書いた『カスタムフィールドを管理画面に表示する』の続きです。『// *ソート可能に(manage_edit-post_sortable_columnsにフックかけてるところ)』から、今回追加した内容となります。functions.php内に記載しました。

ポイント~管理画面で記事を数値でソート(manage_edit-post_sortable_columns&request)

manage_edit-post_sortable_columns』は組み込みファンクションで、管理画面のエディットではよく使われます。ちなみに、カスタム投稿タイプのときは『manage_edit-〇〇〇(カスタム投稿スラッグ)_sortable_columns』となります。『post』は、通常の投稿のとき。

ここにフックをかけるとソートになりますが、基本的にうまくソートされないので、ソートのパラメータを次のファンクションで指定します。’meta_key’ は、先日つくった、BGMのテンポを表す数値『bpm』、数値なので『’orderby’ => ‘meta_value_num’』とします(数値大小ソートのときは、numがないとうまくソートされません)。

これで、管理画面内『カスタムフィールド:bpm』の値で、ソートができるようになりました。パラメータが『orderby=bpm&order=asc』のときは、ゆっくりなBGMから表示。

逆にパラメータが『orderby=bpm&order=desc』のときは、速いBGMから表示していきます。いまのところ最速が208です。 『orderby』は、今回のカスタムフィールド数値のほか、『rand(ランダム)』『date(日付)』など、いろいろなソート方法があります。

使わない列は非表示に(manage_edit-post_columnsにフック)

あとは、使っていない列(今回のケースではcommentsやauthor)をunset(php上では、指定した変数の割当を解除)します。変数$columns を、commentsやauthorをunsetした状態でreturnという感じです。組み込みの、『manage_edit-post_column』に対してフィルターフックをかけます。

2つ列を削りましたが、縦長が解消されて、少し見やすくなりました。

参考リンク

以下の公式サイトを参考に組みました。『manage edit-post type columns』などについては、日本語のcodexにまとめ情報がないこともあるので、英語版サイトもご覧ください。管理画面のファンクションにもフックかけたりできると、ある程度WPで何でもできるようになります。また、WP Queryについても読んでおくと、パラメータなどが確認できるでしょう。

あとがき・まとめ

  • manage_edit-post_sortable_columns&requestフックで、カスタムフィールド値でも管理画面内ソートができる
  • 数値でソートするときは、パラメーターに’orderby’ => ‘meta_value_num’
  • manage_edit-post_columnsフィルターフックで、使わない列は非表示にできる

まとめるとこんな形でしょうか。管理人の環境ではあまりメリットが出なかったけど、『商品やサービスのカタログみたいなサイト』などでは、使いこなすと管理がしやすくなるのではと思います。


【カテゴリ】- WordPress管理画面カスタマイズ
【タグ】- , ,

関連記事