Spalten-Übersicht um benutzerdefinierte Felder erweitern

Die Verwendung von Benutzerdefinierten Feldern 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 Beitrag erklären wir dir, wie du die Admin Spalten (Admin Columns) um Infos aus ausgewählten benutzerdefinierten Feldern, sog. Custom Fields, erweitern kannst.

Allgemeine Anwendung

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','toabai_edit_admin_columns') ;
function toabai_edit_admin_columns($columns) {
  $columns = array(
    'cb' => '',
    'title' => __('Title'),
    'COLUMN' => TITEL DER SPALTE,
    'author' => __('Author'),
    'comments' => '' . __( 'Comments' ) . '',
    'date' => __('Date')
  );
  return $columns;
}

// Inhalte aus benutzerdefinierten Feldern auslesen und den Spalten hinzufügen
add_action ('manage_POSTTYPE_posts_custom_column','toabai_post_custom_columns');
function toabai_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', 'toabai_post_sortierbare_columns' );
function toabai_post_sortierbare_columns( $columns ) {
  $columns['COLUMN'] = 'CUSTOMFIELD';
  return $columns;
}

Beispiel mit Start- und Enddatum

In folgendem Anwendungsbeispiel fügen wir dem Post Type »toabai_termine« die Spalten »Beginn« und »Ende« hinzu und füllen diese mit den Inhalten der Benutzerdefinierten Felder toabai_termin_beginn und toabai_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','toabai_edit_admin_columns') ;
function toabai_edit_admin_columns($columns) {
  $columns = array(
    'cb' => '',
    'title' => __('Title'),
    'begin' => Beginn,
    'end' => Ende,
    'author' => __('Author'),
    'comments' => '' . __( 'Comments' ) . '',
    'date' => __('Date')
  );
  return $columns;
}

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

// Hinzugefügte Spalten sortierbar machen
add_filter( 'manage_edit-toabai_termine_sortable_columns', 'toabai_post_sortierbare_columns' );
function toabai_post_sortierbare_columns( $columns ) {
  $columns['begin'] = 'toabai_termin_beginn';
  $columns['end'] = 'toabai_termin_ende';
  return $columns;
}

Ansicht der Beitragsübersicht mit hinzugefügten Admin Spalten