Ajout d'un support de catégorie / tag / taxonomie aux images / médias

9

J'ai essayé d'ajouter une catégorie, une balise ou un support de taxonomie personnalisé aux images (ou à tous les médias, bien que je ne sois concerné que par les images). Je l'ai compris à mi-chemin avec:

add_action('init', 'create_image_taxonomies');

function create_image_taxonomies() {
$labels = array(
    'name' => 'Media Category'
);

$args = array(
    'labels' => $labels,
    'public' => true
);

register_taxonomy('imagetype', 'attachment', $args);
}

Cela ajoute correctement un champ Catégorie de média à l'écran multimédia. J'ai également confirmé que cela est accessible avec get_the_terms($my_attachment_id, 'imagetype').

Là où je rencontre des problèmes, c'est que ces informations soient affichées n'importe où dans le tableau de bord / administrateur, sauf lors de la visualisation directe des médias - je les veux soit dans un sous-menu, soit dans une colonne personnalisée, ou les deux, comme cela peut être fait pour Messages et pages.

J'ai essayé d'utiliser manage_posts_custom_columnavec manage_edit-attachment_columns, mais rien du tout n'apparaît. J'ai essayé d'utiliser add_media_pagepour afficher quelque chose comme la page générée automatiquement pour les catégories Page et Publication, mais ici j'ai du mal à extraire les images auxquelles j'ai donné des catégories. Vous pouvez voir les deux tentatives ici: http://pastebin.com/S8KYTKRM

Merci d'avance pour toute aide!

Roxanne Ready
la source

Réponses:

8

Voici comment j'ai récemment ajouté une taxonomie personnalisée à la bibliothèque multimédia en tant que colonne triable:

// Add a new column
add_filter('manage_media_columns', 'add_topic_column');
function add_topic_column($posts_columns) {
    $posts_columns['att_topic'] = _x('Topic', 'column name');
    return $posts_columns;
}

// Register the column as sortable
function topic_column_register_sortable( $columns ) {
    $columns['att_topic'] = 'att_topic';
    return $columns;
}
add_filter( 'manage_upload_sortable_columns', 'topic_column_register_sortable' );

add_action('manage_media_custom_column', 'manage_attachment_topic_column', 10, 2);
function manage_attachment_topic_column($column_name, $id) {
    switch($column_name) {
    case 'att_topic':
        $tagparent = "upload.php?";
        $tags = wp_get_object_terms( $id, 'taxonomy_name', '' );
        if ( !empty( $tags ) ) {
            $out = array();
            foreach ( $tags as $c )
                $out[] = "<a href='".$tagparent."tag=$c->slug'> " . esc_html(sanitize_term_field('name'
                         , $c->name, $c->term_id, 'post_tag', 'display')) . "</a>";
            echo join( ', ', $out );
        } else {
            _e('No Topics');
        }
        break;
    default:
        break;
    }
}
marfarma
la source
Je vous remercie! Le filtre et l'action étaient les pièces qui me manquaient.
Roxanne Ready
Pour chaque élément de la colonne cliquable, j'ai ajouté un <a>tag à $ avec: href="upload.php?imagetype='.$tag->slug.'".
Roxanne Ready