Hinzufügen von Kategorie- / Tag- / Taxonomie-Unterstützung zu Bildern / Medien

9

Ich habe versucht, Bildern (oder allen Medien, obwohl ich mich nur mit Bildern befasse) Unterstützung für Kategorien, Tags oder benutzerdefinierte Taxonomien hinzuzufügen. Ich habe es teilweise herausgefunden mit:

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);
}

Dadurch wird dem Medienbildschirm ordnungsgemäß ein Feld Medienkategorie hinzugefügt. Ich habe auch bestätigt, dass mit darauf zugegriffen werden kann get_the_terms($my_attachment_id, 'imagetype').

Wenn ich auf Probleme stoße, werden diese Informationen an einer beliebigen Stelle im Administrator / Dashboard angezeigt, außer wenn die Medien direkt angezeigt werden. Ich möchte sie entweder in einem Untermenü oder als benutzerdefinierte Spalte oder in beiden, wie dies möglich ist Beiträge und Seiten.

Ich habe versucht, manage_posts_custom_columnzusammen mit zu verwenden manage_edit-attachment_columns, aber es wird überhaupt nichts angezeigt. Ich habe versucht, so add_media_pageetwas wie die automatisch für Seiten- und Beitragskategorien generierte Seite anzuzeigen, aber hier habe ich Probleme beim Abrufen der Bilder, denen ich Kategorien zugewiesen habe. Sie können beide Versuche hier sehen: http://pastebin.com/S8KYTKRM

Vielen Dank im Voraus für jede Hilfe!

Roxanne bereit
quelle

Antworten:

8

So habe ich kürzlich der Medienbibliothek eine benutzerdefinierte Taxonomie als sortierbare Spalte hinzugefügt:

// 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
quelle
Danke! Der Filter und die Aktion waren die Teile, die mir fehlten.
Roxanne bereit
Um jedes Element in der Spalte anklickbar zu machen, habe ich <a>$ out ein Tag hinzugefügt mit : href="upload.php?imagetype='.$tag->slug.'".
Roxanne bereit