web-dev-qa-db-ger.com

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

Ich habe versucht, Bilder (oder alle Medien, obwohl ich mich nur mit Bildern befasse) mit Kategorie-, Tag- oder benutzerdefinierten Taxonomie-Unterstützung zu versehen. 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 ein Medienkategoriefeld ordnungsgemäß hinzugefügt. Ich habe auch bestätigt, dass dies mit get_the_terms($my_attachment_id, 'imagetype') erreicht werden kann.

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, dass sie entweder in einem Untermenü oder als benutzerdefinierte Spalte oder in beiden Spalten angezeigt werden Beiträge und Seiten.

Ich habe versucht, manage_posts_custom_column zusammen mit manage_edit-attachment_columns zu verwenden, aber es wird überhaupt nichts angezeigt. Ich habe versucht, add_media_page zu verwenden, um so etwas wie die Seite anzuzeigen, die automatisch für Seiten- und Post-Kategorien generiert wurde, aber hier habe ich Probleme, die Bilder zu ziehen, denen ich Kategorien zugewiesen habe. Sie können beide Versuche hier sehen: http://Pastebin.com/S8KYTKRM

Vielen Dank im Voraus für jede Hilfe!

9
Roxanne Ready

So habe ich der Medienbibliothek kürzlich 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;
    }
}
8
marfarma