Hinzufügen und Anpassen der Admin-Spalten in WordPress

Marc Wagner, September 12, 2024

Die Anpassung des WordPress-Admin-Panels kann erheblich zur Effizienz und Benutzerfreundlichkeit beitragen, insbesondere wenn man eine große Anzahl von Inhalten oder benutzerdefinierten Post-Typen verwaltet. Eine der effektivsten Möglichkeiten, um dies zu erreichen, ist das Hinzufügen und Anpassen von Admin-Spalten für Post-Typen, Seiten, Benutzer oder benutzerdefinierte Datensätze.

In diesem Blogbeitrag zeige ich dir, wie du mit PHP eigene Spalten zum WordPress-Admin-Bereich hinzufügst und diese nach deinen Wünschen anpasst.

Warum sollte man Admin-Spalten anpassen? #

Die Standardspalten, die WordPress im Admin-Bereich anzeigt, sind oft nicht ausreichend, um alle Informationen zu zeigen, die man schnell im Überblick haben möchte. Durch das Hinzufügen von zusätzlichen Spalten kann man wichtige Daten, wie benutzerdefinierte Felder, Beitragsstatistiken oder Metadaten, anzeigen lassen.

Schritte zur Anpassung der Admin-Spalten in WordPress #

Spalten hinzufügen #

Mit WordPress Hooks wie manage_posts_columns oder manage_${post_type}_posts_columns kannst du die Standardspalten anpassen. Um beispielsweise eine neue Spalte für den Post-Typ „Bücher“ hinzuzufü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');

Dieser Code fügt eine neue Spalte namens „Autor“ zum Admin-Panel des benutzerdefinierten Post-Typs „Bücher“ hinzu.

Spalteninhalt anzeigen #

Nachdem du die Spalte hinzugefügt hast, musst du die Inhalte dieser Spalte für jede Zeile in der Liste der Beiträge füllen. 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 benutzerdefinierten Feldes book_author, das für jeden Post gespeichert ist, in der neuen „Autor“-Spalte angezeigt.

Sortierbare Spalten hinzufügen #

Es ist auch möglich, Spalten sortierbar zu machen, was besonders nützlich ist, wenn du z.B. nach einem bestimmten Autor oder Datum sortieren möchtest. Dazu fügst du den Filter manage_edit-${post_type}_sortable_columns hinzu:

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 diesen Code wird die „Autor“-Spalte sortierbar. Beachte jedoch, dass für eine funktionierende Sortierung ein zusätzlicher pre_get_posts Hook erforderlich 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');

Dieser zusätzliche Code sorgt dafür, dass nach dem benutzerdefinierten Feld book_author sortiert wird.

Spaltenbreite anpassen (optional) #

Falls du die Breite der Spalten ändern möchtest, kannst du dies mit CSS tun. Du kannst dazu den WordPress-Admin-Bereich mit dem admin_head Hook erweitern:

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

Hier wird die Breite der „Autor“-Spalte auf 20 % festgelegt.

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

Ein häufiger Anwendungsfall ist das Hinzufügen von benutzerdefinierten Spalten für ein benutzerdefiniertes Plugin oder Thema. Hier ist ein weiteres Beispiel, wie du für einen benutzerdefinierten Post-Typ „Rezensionen“ die Bewertung und das Datum der Rezension hinzufügen könntest:

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 diesem Beispiel fügst du zwei neue Spalten – „Bewertung“ und „Rezensionsdatum“ – für den Post-Typ „Rezensionen“ hinzu und füllst diese mit benutzerdefinierten Feldern.

Fazit #

Das Hinzufügen und Anpassen von Admin-Spalten in WordPress ist eine hervorragende Möglichkeit, den Überblick über deine Inhalte zu verbessern und Arbeitsabläufe zu optimieren. Mit den hier gezeigten PHP-Beispielen kannst du benutzerdefinierte Informationen in den Admin-Listenansichten deiner Website anzeigen lassen.

Durch das Hinzufügen von sortierbaren Spalten, das dynamische Befüllen von Spalteninhalten und Anpassungen wie der Breite der Spalten kannst du das Backend deiner WordPress-Installation optimal auf deine Bedürfnisse zuschneiden.

Benutzerbild von Marc Wagner
Marc Wagner

Hi Marc here. I'm the founder of Forge12 Interactive and have been passionate about building websites, online stores, applications and SaaS solutions for businesses for over 20 years. Before founding the company, I already worked in publicly listed companies and acquired all kinds of knowledge. Now I want to pass this knowledge on to my customers.

Ähnliche Beiträge

Kommentare

Hinterlasse einen Kommentar