超高速WordPress実行環境 KUSANAGI稼働中
本サイト処理速度
Language language icon

    メディアのカテゴライズ(前編)

    WordPress

    カスタムタクソノミーを使って

    ■ CODE 1

    $labels = array(
    	'name' => 'カラー',
    	'singular_name' => 'カラー',
    	'search_items' => '色で探す',
    	'all_items' => '全ての色',
    	'parent_item' => '親色',
    	'parent_item_colon' => '親の色',
    	'edit_item' => 'カラーの編集',
    	'update_item' => 'カラーを更新',
    	'add_new_item' => 'カラーを追加',
    	'new_item_name' => '新規カラー名',
    ); 	
    
    register_taxonomy(
    	'color',
    	array( 'attachment' ),
    	array(
    		'hierarchical' => true,
    		'labels' => $labels,
    		'query_var' => true,
    		'rewrite' => array(
    			'slug' => 'color',
    			'hierarchical' => true,
    			'with_front' => false
    		),
    	)
    );
    
    

    と記述すると、メディアのカテゴライズを行うことができるようになります。
    ただし、投稿、ページ、カスタム投稿タイプと異なり、メディアの場合は、show_ui パラメータが true になっていても、管理画面のメニューにはタクソノミーのメニューが表示されません。

    「入力段階でタイプミスをして不要なタクソノミーを削除したい」、「スラッグを変更したい」などなど、やはり編集したいと思うのは常だと思います。

    ただし、メディアのタクソノミーも編集ページ自体が存在していないわけではなく、

    http://www.example.com/wp-admin/edit-tags.php?taxonomy=color
    

    へアクセスすると、タクソノミーの管理画面が表示されることが分かります。

    つまり、あとはメディアメニュー内にタクソノミー名と編集ページへのリンクが設置できれば、メディアのタクソノミーも修正などを自由に行うことで出来るようになるのです。

    media_taxonomy
    通常、サブメニューの追加は、add_submenu_page 関数を使いますが、このケースでは、コールバックで呼ばれる関数が存在しないため利用できません。
    そこで、WordPressの管理画面メニューが $menu, $submenu というグローバル変数で管理されていることを利用して、この変数に直接メニューのデータを追加してしまうようにします。

    CODE 2 をfunctions.php に貼り付けすれば、右図のように、メディアだけのタクソノミーがメディアメニュー内に追加されるようになります。

    ■ CODE 2

    function add_media_taxonomy_menu() {
    	global $wp_taxonomies, $submenu;
    
    	$media_taxonomies = array();
    	if ( $wp_taxonomies ) {
    		foreach ( $wp_taxonomies as $key => $obj ) {
    			if ( count( $obj->object_type ) == 1 && $obj->object_type[0] == 'attachment' && $obj->show_ui ) {
    				$media_taxonomies[$key] = $obj;
    			}
    		}
    	}
    
    	if ( $media_taxonomies ) {
    		$priority = 50;
    		foreach ( $media_taxonomies as $key => $media_taxonomy ) {
    			if ( current_user_can( $media_taxonomy->cap->manage_terms ) ) {
    				$submenu['upload.php'][$priority] = array( $media_taxonomy->labels->menu_name, 'upload_files', 'edit-tags.php?taxonomy=' . $key );
    				$priority += 5;
    			}
    		}
    	}
    }
    add_action( 'admin_menu', 'add_media_taxonomy_menu' );
    
    

    後半は、メディアの編集ページのカスタマイズを紹介予定です。

    KUSANAGI導入事例集プレゼント!

    100を超えるKUSANAGIとWordPressの導入事例がわかる『KUSANAGI導入事例集』(非売品)を無料でプレゼントいたします。是非以下のフォームからお申し込みください。




    お客様の課題を解決するソリューション、
    条件に沿ったベネフィットあるご提案を提供いたします。

    03-6551-2996/ご相談・お問い合わせフォーム 03-6551-2996

    ご相談・お問い合わせフォーム
    【法人向け】WordPressのお悩み解決!個別相談会(無料)を随時開催しています。
    To top