前回、「WordPressの管理画面の投稿一覧をカスタマイズする」にてWordPressの管理画面の投稿一覧に投稿IDや文字数やサムネイル画像を追加して投稿一覧を使いやすくするカスタマイズする方法を紹介しました。今回は投稿一覧でやったようなカスタマイズがメディア一覧でもできるのでそのカスタマイズ方法を紹介します。
まずはじめにWordPressのメディア一覧ページは2種類の表示方法があります。一つは画像や音声などのメディアをサムネイル表示して表示する一覧と投稿ページなどと同じようなリストで表示する一覧ページです。今回のカスタマイズではリスト表示の場合での投稿一覧での表示をカスタマイズしたやり方になります。
普通にWordPressをインストールした直後のメディア一覧ページはこんな感じです。
こちらをカスタマイズするとこんな感じになります。
このようにカスタマイズするには、主に2つのactionフックに読み込ませるように関数を作成します。
- 投稿一覧に新たにカラムを追加する関数
- 追加したカラムの内容を表示する関数
基本的に投稿一覧でやったときのカスタマイズと同じ方法をとります。
メディア一覧に新たにカラムを追加する
まずはメディア一覧に新たにカラムを追加します。下記の関数をfunctions.phpに追加します。
function media_url_column($cols) {
$cols["media_url"] = "メディアURL";
return $cols;
}
add_action('manage_media_columns', 'media_url_column');
上記の関数はmanage_media_columnsフックにmedia_url_columns()を呼び出す処理になってます。関数の引数$colsに投稿一覧のカラムの配列が入っています。$colsの配列に’media_url’を追加することでカラムを追加します。’media_url’は自由に設定できます。
この関数を追加することで以下のような表示になります。
追加したカラムの行に表示したいデータの関数を作成する
カラムの追加ができたら表示したいデータの関数を作成します。カラムの追加がメディアURLなのでメディアURLを表示する関数を作ります。
下記のコードがメディアURLを表示する関数になります。
function media_url_value($column_name, $id) {
if ($column_name == "media_url") {
printf('<input type="text" class="media_url" value="%s" disabled>', wp_get_attachment_url($id));
}
}
add_filter('manage_media_custom_column', 'media_url_value');
上記の関数は、$column_nameがmedia_url_column()で定義したmedia_urlが入っている場合のみwp_get_attachment_urlで取得したURLをinputタグで出力するような処理になっています。actionフックのmanage_media_custom_columnが$column_nameと$post_idを引数にしているので$column_nameの値によって$idを使った処理なんかもできるといった形になってます。
関数が適用された状態が最初にカスタマイズした画像で表示した状態と同じ形になります。
カラムの追加とカラム内容の表示の関数をまとめる
紹介したカラムの追加とカラム内容の関数をまとめるとこんな感じになります。これらのコードをfunctions.phpに追加すればメディア一覧に表示されます。
function media_url_column($cols) {
$cols["media_url"] = "メディアURL";
return $cols;
}
add_action('manage_media_columns', 'media_url_column');
function media_url_value($column_name, $id) {
if ($column_name == "media_url") {
printf('<input type="text" class="media_url" value="%s" disabled>', wp_get_attachment_url($id));
}
}
add_filter('manage_media_custom_column', 'media_url_value');
まとめ
今回は、メディア一覧の表示をカスタマイズする方法を紹介しました。基本的に投稿一覧でカスタマイズした方法を同じで呼ばれるフックが違うという感じです。
ただメディア一覧でカスタマイズした内容は、下記のような感じでメディアの詳細でも表示されます。
なのであまり一覧にいろんな表示をカスタマイズするのはちょっと厳しいかもしれません。