kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

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.

Workshops und Seminare von kulturbanause

Visual Prototyping, Responsive Design, CSS Grid & Flexbox, WordPress, Adobe XD, HTML & CSS Grundlagen, Website-Optimierung …

Jetzt Frühbucher-Rabatte sichern!

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','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

Links / Quellen:

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Unterstützung bei WordPress-Projekten

Unsere WordPress Agentur ist auf die Entwicklung maßgeschneiderter WordPress-Themes und -Websites spezialisiert. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung eines Projekts benötigst, helfen wir gerne weiter.
WordPress-Leistungsangebot →

Das könnte dich auch interessieren

1 Kommentar

  1. Frank Reiling

    Verfasst am 8. Februar 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

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.