Hinzufügen und Anpassen der Admin-Spalten in WordPress
Marc Wagner
September 6, 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.
Artikel von:
Marc Wagner
Hallo, Marc hier. Ich bin der Gründer von Forge12 Interactive und bereits seit über 20 Jahren leidenschaftlich dabei Webseiten, Onlineshops, Anwendungen und SaaS-Lösungen für Unternehmen zu entwickeln. Vor der Gründung habe ich bereits in Börsen notierten Unternehmen gearbeitet und mir allerlei Wissen angeeignet. Dieses Wissen möchte ich nun an meine Kunden weitergeben.