Hinzufügen und Anpassen der Admin-Spalten in WordPress

Marc Wag­ner

Sep­tem­ber 6, 2024

4 min read|

Die Anpas­sung des Word­­Press-Admin-Panels kann erheb­lich zur Effi­zi­enz und Benut­zer­freund­lich­keit bei­tra­gen, ins­be­son­de­re wenn man eine gro­ße Anzahl von Inhal­ten oder benut­zer­de­fi­nier­ten Post-Typen ver­wal­tet. Eine der effek­tivs­ten Mög­lich­kei­ten, um dies zu errei­chen, ist das Hin­zu­fü­gen und Anpas­sen von Admin-Spal­­ten für Post-Typen, Sei­ten, Benut­zer oder benut­zer­de­fi­nier­te Daten­sät­ze.

In die­sem Blog­bei­trag zei­ge ich dir, wie du mit PHP eige­ne Spal­ten zum Word­­Press-Admin-Bereich hin­zu­fügst und die­se nach dei­nen Wün­schen anpasst.

Warum sollte man Admin-Spalten anpassen? #

Die Stan­dard­spal­ten, die Word­Press im Admin-Bereich anzeigt, sind oft nicht aus­rei­chend, um alle Infor­ma­tio­nen zu zei­gen, die man schnell im Über­blick haben möch­te. Durch das Hin­zu­fü­gen von zusätz­li­chen Spal­ten kann man wich­ti­ge Daten, wie benut­zer­de­fi­nier­te Fel­der, Bei­trags­sta­tis­ti­ken oder Meta­da­ten, anzei­gen las­sen.

Schritte zur Anpassung der Admin-Spalten in WordPress #

Spalten hinzufügen

Mit Word­Press Hooks wie manage_posts_columns oder manage_${post_type}_posts_columns kannst du die Stan­dard­spal­ten anpas­sen. Um bei­spiels­wei­se eine neue Spal­te für den Post-Typ „Bücher“ hin­zu­zu­fü­gen, sieht der Code wie folgt aus:

function my_custom_book_columns($columns) {
    // Neue Spalte hinzufügen
    $columns['book_author'] = __('Autor');
    return $columns;
}
add_filter('manage_book_posts_columns', 'my_custom_book_columns');

Die­ser Code fügt eine neue Spal­te namens „Autor“ zum Admin-Panel des benut­zer­de­fi­nier­ten Post-Typs „Bücher“ hin­zu.

Spalteninhalt anzeigen

Nach­dem du die Spal­te hin­zu­ge­fügt hast, musst du die Inhal­te die­ser Spal­te für jede Zei­le in der Lis­te der Bei­trä­ge fül­len. Dies erreichst du mit dem manage_posts_custom_column Hook:

function my_custom_book_column_content($column, $post_id) {
    if ($column == 'book_author') {
        $author = get_post_meta($post_id, 'book_author', true);
        echo esc_html($author);
    }
}
add_action('manage_book_posts_custom_column', 'my_custom_book_column_content', 10, 2);

Hier wird der Wert des benut­zer­de­fi­nier­ten Fel­des book_author, das für jeden Post gespei­chert ist, in der neu­en „Autor“-Spalte ange­zeigt.

Sortierbare Spalten hinzufügen

Es ist auch mög­lich, Spal­ten sor­tier­bar zu machen, was beson­ders nütz­lich ist, wenn du z.B. nach einem bestimm­ten Autor oder Datum sor­tie­ren möch­test. Dazu fügst du den Fil­ter manage_edit-${post_type}_sortable_columns hin­zu:

function my_sortable_book_columns($columns) {
    $columns['book_author'] = 'book_author';
    return $columns;
}
add_filter('manage_edit-book_sortable_columns', 'my_sortable_book_columns');

Durch die­sen Code wird die „Autor“-Spalte sor­tier­bar. Beach­te jedoch, dass für eine funk­tio­nie­ren­de Sor­tie­rung ein zusätz­li­cher pre_get_posts Hook erfor­der­lich ist.

function my_book_column_orderby($query) {
    if (!is_admin()) {
        return;
    }

    $orderby = $query->get('orderby');
    if ('book_author' == $orderby) {
        $query->set('meta_key', 'book_author');
        $query->set('orderby', 'meta_value');
    }
}
add_action('pre_get_posts', 'my_book_column_orderby');

Die­ser zusätz­li­che Code sorgt dafür, dass nach dem benut­zer­de­fi­nier­ten Feld book_author sor­tiert wird.

Spaltenbreite anpassen (optional)

Falls du die Brei­te der Spal­ten ändern möch­test, kannst du dies mit CSS tun. Du kannst dazu den Word­­Press-Admin-Bereich mit dem admin_head Hook erwei­tern:

function my_custom_column_width() {
    echo '<style>
        .column-book_author { width: 20%; }
    </style>';
}
add_action('admin_head', 'my_custom_column_width');

Hier wird die Brei­te der „Autor“-Spalte auf 20 % fest­ge­legt.

Beispiel: Benutzerdefinierte Spalten für ein Plugin oder Thema #

Ein häu­fi­ger Anwen­dungs­fall ist das Hin­zu­fü­gen von benut­zer­de­fi­nier­ten Spal­ten für ein benut­zer­de­fi­nier­tes Plug­in oder The­ma. Hier ist ein wei­te­res Bei­spiel, wie du für einen benut­zer­de­fi­nier­ten Post-Typ „Rezen­sio­nen“ die Bewer­tung und das Datum der Rezen­si­on hin­zu­fü­gen könn­test:

function my_custom_review_columns($columns) {
    $columns['review_rating'] = __('Bewertung');
    $columns['review_date'] = __('Rezensionsdatum');
    return $columns;
}
add_filter('manage_review_posts_columns', 'my_custom_review_columns');

function my_custom_review_column_content($column, $post_id) {
    switch ($column) {
        case 'review_rating':
            $rating = get_post_meta($post_id, 'review_rating', true);
            echo esc_html($rating);
            break;
        case 'review_date':
            $date = get_post_meta($post_id, 'review_date', true);
            echo esc_html($date);
            break;
    }
}
add_action('manage_review_posts_custom_column', 'my_custom_review_column_content', 10, 2);

In die­sem Bei­spiel fügst du zwei neue Spal­ten – „Bewer­tung“ und „Rezen­si­ons­da­tum“ – für den Post-Typ „Rezen­sio­nen“ hin­zu und füllst die­se mit benut­zer­de­fi­nier­ten Fel­dern.

Fazit #

Das Hin­zu­fü­gen und Anpas­sen von Admin-Spal­­ten in Word­Press ist eine her­vor­ra­gen­de Mög­lich­keit, den Über­blick über dei­ne Inhal­te zu ver­bes­sern und Arbeits­ab­läu­fe zu opti­mie­ren. Mit den hier gezeig­ten PHP-Bei­­spie­­len kannst du benut­zer­de­fi­nier­te Infor­ma­tio­nen in den Admin-Lis­­ten­an­­sich­­ten dei­ner Web­site anzei­gen las­sen.

Durch das Hin­zu­fü­gen von sor­tier­ba­ren Spal­ten, das dyna­mi­sche Befül­len von Spal­ten­in­hal­ten und Anpas­sun­gen wie der Brei­te der Spal­ten kannst du das Backend dei­ner Word­­Press-Instal­la­­ti­on opti­mal auf dei­ne Bedürf­nis­se zuschnei­den.

88e86fcb816eff22bc917094df2862d8dd5c0e978b333e6dd5f36f808990c261 96

Arti­kel von:

Marc Wag­ner

Hal­lo, Marc hier. Ich bin der Grün­der von Forge12 Inter­ac­ti­ve und bereits seit über 20 Jah­ren lei­den­schaft­lich dabei Web­sei­ten, Online­shops, Anwen­dun­gen und SaaS-Lösun­gen für Unter­neh­men zu ent­wi­ckeln. Vor der Grün­dung habe ich bereits in Bör­sen notier­ten Unter­neh­men gear­bei­tet und mir aller­lei Wis­sen ange­eig­net. Die­ses Wis­sen möch­te ich nun an mei­ne Kun­den wei­ter­ge­ben.

Hast du eine Fra­ge? Hin­ter­lass bit­te einen Kom­men­tar