WordPress: Admin Columns um Custom Fields erweitern

Die Verwendung von Benutzerdefinierten Feldern (Custom Fields) ist die gängige Methode um in WordPress zusätzliche Inhalte unabhängig vom Hauptinhalt zu verwalten. Viele dieser zusätzlichen Informationen können in der Übersicht der Beiträge im Backend sehr nützlich sein. Leider zeigt WordPress manuell ergänzte Benutzerdefinierte Felder nicht automatisch in der Übersicht (den. sog. Admin Columns) an. In diesem Artikel erklären wir, wie die Admin Columns um Infos aus ausgewählten Custom Fields erweitert werden.

Allgemeine Funktionsweise

Um im Administrationsbereich von WordPress der Übersicht von Seiten, Beiträgen oder Custom Post Types weitere Admin Columns hinzuzufügen, kopiert das folgende Snippet in die functions.php eures Themes oder in ein seitenspezifisches Plugin.

Anschließend ersetzt ihr den Platzhalter POSTTYPE mit dem Slug eures Posttypes, den Platzhalter CUSTOMFIELD mit dem Slug eures Custom Fields und COLUMN mit einem von euch frei wählbaren Slug für die Spalte (Admin Column). Zuletzt gebt ihr der Spalte einen geeigneten Titel an Stelle von TITEL DER SPALTE.

// Tabellenkopf und -fuß um Felder erweitern
add_filter('manage_edit-POSTTYPE_columns','kb_edit_admin_columns') ;
function kb_edit_admin_columns($columns) {
  $columns = array(
    'cb' => '<input type="checkbox" />',
    'title' => __('Title'),
    'COLUMN' => TITEL DER SPALTE,
    'author' => __('Author'),
    'comments' => '<span class="vers comment-grey-bubble" title="' . __( 'Comments' ) . '"><span class="screen-reader-text">' . __( 'Comments' ) . '</span></span>',
    'date' => __('Date')
  );
  return $columns;
}

// Inhalte aus benutzerdefinierten Feldern auslesen und den Spalten hinzufügen
add_action ('manage_POSTTYPE_posts_custom_column','kb_post_custom_columns');
function kb_post_custom_columns($column) {
  global $post;
  $custom = get_post_custom();
  switch ($column) {
    case "COLUMN":
      $kb_field = get_post_meta($post->ID, 'CUSTOMFIELD', true );
      echo $kb_field;
    break;
  }
}

// Hinzugefügte Spalten sortierbar machen
add_filter( 'manage_edit-POSTTYPE_sortable_columns', 'kb_post_sortierbare_columns' );
function kb_post_sortierbare_columns( $columns ) {
  $columns['COLUMN'] = 'CUSTOMFIELD';
  return $columns;
}

Beispiel mit Start- und Enddatum

In folgendem Anwendungsbeispiel fügen wir dem Post Type »kb_termine« die Spalten »Beginn« und »Ende« hinzu und füllen diese mit den Inhalten der Benutzerdefinierten Felder kb_termin_beginn und kb_termin_ende. Die Datumsangaben werden zudem in ein einheitliches Datumsformat umgewandelt. Zuletzt werden die neu hinzugefügten Spalten sortierbar gemacht.

// Tabellenkopf und -fuß um Felder erweitern
add_filter('manage_edit-kb_termine_columns','kb_edit_admin_columns') ;
function kb_edit_admin_columns($columns) {
  $columns = array(
    'cb' => '<input type="checkbox" />',
    'title' => __('Title'),
    'begin' => Beginn,
    'end' => Ende,
    'author' => __('Author'),
    'comments' => '<span class="vers comment-grey-bubble" title="' . __( 'Comments' ) . '"><span class="screen-reader-text">' . __( 'Comments' ) . '</span></span>',
    'date' => __('Date')
  );
  return $columns;
}

// Inhalte aus benutzerdefinierten Feldern holen und den Spalten hinzufügen
add_action ('manage_kb_termine_posts_custom_column','kb_post_custom_columns');
function kb_post_custom_columns($column) {
  global $post;
  $custom = get_post_custom();
  switch ($column) {
    case "begin":
      $from = get_post_meta($post->ID, 'kb_termin_beginn', true );
      $date = new DateTime( $from );
      echo $date->format('d.m.Y');
    break;
    case "end":
      $to = get_post_meta($post->ID, 'kb_termin_ende', true );
      $date = new DateTime( $to );
      echo $date->format('d.m.Y');
    break;
  }
}

// Hinzugefügte Spalten sortierbar machen
add_filter( 'manage_edit-kb_termine_sortable_columns', 'kb_post_sortierbare_columns' );
function kb_post_sortierbare_columns( $columns ) {
  $columns['begin'] = 'kb_termin_beginn';
  $columns['end'] = 'kb_termin_ende';
  return $columns;
}
Ansicht der Beitragsübersicht mit hinzugefügten Admin Spalten
Ansicht der Beitragsübersicht mit hinzugefügten Admin Spalten

Geschrieben von kulturbanause Team

Benutzerbild

Beiträge bei denen das kulturbanause-Team als Autor angegeben ist, wurden von mehreren Personen in Zusammenarbeit geschrieben. Wir nutzen diesen Blog als öffentliches Archiv und um euch bei alltäglichen Problemen im Zusammenhang mit der Erstellung von Websites zu helfen. Neben diesem Blog bieten wir auch Trainings wie Schulungen, Bücher oder Videos an. Und natürlich unterstützen wir auch gerne im Rahmen unserer Agenturtätigkeit.

Feedback & Ergänzungen – 1 Kommentar

  1. Frank Reiling
    schrieb am 08.02.2018 um 17:52 Uhr:

    Hallo Jonas,

    super Beitrag, danke. Wie krieg ich das customfields mit in die Suche für die Beiträge aufgenommen. Also dass ich in der Liste nach den ausgelesenen Metainfos filtern kann?

    Gruß

    Frank

    Antworten

Kommentar zu dieser Seite

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →