toscho.design

WordPress: Attachment-Screen ergänzen

Die Bearbeitungsseite für Anhänge ist recht spartanisch. Normalerweise finde ich das auch gut so. Ab und zu möchte man aber leicht sehen, welche ID der Anhang hat und welchem Post er zugeordnet wurde. Dafür habe ich mir ein kleines Plugin geschrieben, das 'attachment_fields_to_edit' filtert – die Felder, zu denen auch der Titel und die Beschreibung gehören.

Es ist ziemlich … roh, zeigt aber, so hoffe ich, wie kreativ man hier werden kann.

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Attachment Extras
 * Description: Adds attachment ID and link to parent post to the attachment screen.
 * Plugin URI:  http://toscho.de/?p=2260
 * Version:     2012.09.06
 * Author:      Thomas Scholz <info@toscho.de>
 * Author URI:  http://toscho.de
 * License:     MIT
 * License URI: http://www.opensource.org/licenses/mit-license.php
 */

if ( ! function_exists( 't5_attachment_extras' ) )
{
    add_filter( 'attachment_fields_to_edit', 't5_attachment_extras', 10, 2 );

    function t5_attachment_extras( $form_fields, $post )
    {
        $form_fields['t5_id'] = array (
            'label' => 'ID',
            'input' => 'html',
            'html'  => sprintf(
                '<a href="%1$s" title="View">%2$d</a>',
                get_permalink( $post->ID ), // Link to attachment page
                $post->ID
                )
        );

        if ( empty ( $post->post_parent ) or 0 === $post->post_parent )
        {
            return $form_fields;
        }

        $parent       = get_post( $post->post_parent );
        $parent_title = '' === $parent->post_title
                        ? $parent->ID
                        : esc_html( $parent->post_title );
        $parent_html  = sprintf(
            '<a href="%1$s" title="View">%2$s</a> •
            <a href="%3$s" title="Edit">ID: %4$d</a>',
            get_permalink( $parent->ID ),
            ( '' === $parent->post_title
                ? $parent->ID
                : esc_html( $parent->post_title ) ),
            get_edit_post_link( $parent->ID ),
            $parent->ID
        );

        $form_fields['t5_parent'] = array (
            'label'      => 'Parent:',
            'input'      => 'html',
            'html'       => $parent_html,
        );

        return $form_fields;
    }
}

GitHub: https://gist.github.com/3656132

Dies ist das Ergebnis:

Attachment-Extras

Dies ist eine Übergangslösung. In WordPress 3.5 soll das Interface für Anhänge grundlegend überarbeitet werden, dann funktioniert das hier vielleicht nicht mehr.

3 Kommentare

  1. Ralf Albert am 06.09.2012 · 19:54

    function_exists( 't5_show_attachment_id' ) vs. function t5_attachment_extras
    Scheint ein Tippfehler drin zu sein.

  2. Thomas Scholz am 07.09.2012 · 03:39

    Aua! Danke, ich habe es korrigiert.

  3. David am 08.09.2012 · 20:20

    Du hättest ja der Vollständigkeit halber noch den dazugehörigen Filter nennen können, mit dem man Daten auch auswerten kann, falls man Formularfelder hinzugefügt hat:
    attachment_fields_to_save ;)