この記事は最後に更新してから1年以上経過しています。

メディア(attachment)を拡張してより便利に活用する

説明

「メディア(attachment)」は、標準ではカテゴリもタグもカスタムフィールドもない。投稿と親子関係を作って利用することが前提だからともいえるが、メディアをもっと便利に活用するために、それらの付加情報を絞り込みの材料として利用できないか調べてみた。

投稿タイプの1つである「メディア」は、リクエストの初期段階で register_post_type関数によって登録される。その際、メディアは「投稿(post)」と同じ構造になっているが、タクソノミーは指定されていない。また、編集ページのウィジェット指定は、タイトル(title)、作成者(author)、コメント(comments)のみとなっている。

投稿タグを追加する

「カテゴリ」や「タグ」などのタクソノミーを追加する場合は、そのタクソノミーと投稿タイプの両方が登録されていなければならない。どちらかが登録されていない場合はエラーになるので、要注意だ。というわけで、ここではinitアクションを利用する。

add_action( 'init' , 'attachment_extend' );

function attachment_extend() {
	register_taxonomy_for_object_type( 'post_tag', 'attachment' );
}

register_taxonomy_for_object_type関数は、タクソノミーを投稿タイプで利用できるよう登録するもので、タグ(post_tag)、メディア(attachment)を順に指定する。これだけで、メディアの編集ページに「タグ」ウィジェットが、ライブラリページの一覧にも「タグ」が追加される。

属性(順序)を追加する

次に「属性(順序)」ウィジェットを追加してみる。具体的には、先ほどにinitアクション関数を次のように1行追加するだけである。

function attachment_extend() {
	register_taxonomy_for_object_type( 'post_tag', 'attachment' );
	add_post_type_support( 'attachment', 'page-attributes' );
}

add_post_type_support関数を使用し、属性ウィジェットである'page-attributes'を指定すればいい。これで、メディアの編集ページに「タグ」ウィジェットが追加される。なお属性ウィジェットは、標準の固定ページで利用しているものだが、固定ページ以外で利用する場合は「順序」のみが表示され、「親」や「テンプレート」項目は表示されない。これでメディア情報の取得時に'menu_order'を活用できる。

おまけ。メディアでカスタムフィールドを利用する場合は、add_post_type_support関数のパラメータを次のように変更すれば1回の呼び出しで済む。

add_post_type_support( 'attachment', array( 'page-attributes', 'custom-fields' ) );

最終更新 : 2014年05月22日 19:17


お勧め

get_next_comments_link(2024年12月18日 更新)

string get_next_comments_link( [ string $label = '' [ , int $max_page = 0 [ , int $page = null ] ] ] )
次のコメントリンクを取得する。

add_dashboard_page(2022年6月27日 更新)

mixed add_dashboard_page( string $page_title, string $menu_title, mixed string $capability, string $menu_slug [ , mixed $function = '' ] )
ダッシュボードメニューにサブメニューを登録する。

use_block_editor_for_post(2023年4月24日 更新)

bool use_block_editor_for_post( int | WP_Post $post )
投稿がブロックエディターに対応しているか調べる。

wp_image_editor_supports(2012年12月20日 更新)

bool wp_image_editor_supports( [ mixed $args = array() ] )
イメージエディタがサポートしているか調べる。

wp_check_filetype_and_ext(2019年2月23日 更新)

array wp_check_filetype_and_ext( string $file, string $filename [ , array $mimes = null ] )
ファイルタイプと拡張子を調べる。