WordPress für Unternehmensseiten Teil III

Nehmen wir an sie betreiben ein Steuerbüro, oder eine Anwalts-Kanzlei und möchten auf Ihren Kanzlei Webseiten gelegentlich rechtliche Themen wie z.B. Gerichtsurteile besprechen. Natürlich können sie direkt loslegen und Ihren Beitrag veröffentlichen, allerdings wäre es praktischer, wenn sie für bestimmte Daten eigene Eingabefelder hätten. So können sie ihre Beiträge zu dieser Themengruppe wesentlich konsistenter aussehen lassen, wenn sie eigene Felder für Daten wie:

  • „Aktenzeichen“,
  • „Gericht“,
  • „Datum“,
  • „Kommentar“,
  • „Prozessgegner“,
  • „Prozess-Gegenstand“,
  • „Einleitung“,
  • „Urteil (o. Urteils-Auschnitt)“,
  • „Urteilsbegründung“,
  • etc.

hätten. Je nach Bedarf ließe sich die Liste ins Unendliche verlängern. Sicher kann man es auch übertreiben, und so viele Felder definieren, dass es unübersichtlich wird.

Seitentypen WordPress

Diese Felder kann man sich schnell als sogenannte „Custom-Fields“ in WordPress erstellen, was seine eigenen Reize hat, wenn man bestimmte Felder nur gelegentlich benötigt. Da sie aber öfter über Gerichtsurteile berichten möchten, möchten sie gern einen eigenen Seiten-Typ haben, der die benötigten Felder hierfür bereitstellt. Kein Problem, die Funktion register_posttype() liefert alles, was man hierfür benötigt.
Hierzu ein kleines Beispiel für unsere Felder „Aktenzeichen“, „Gericht“, „Datum“ und „Kommentar“: Der Post-Type soll hier mal „urteil“ heißen, er soll öffentlich sein, soll ein Archiv haben und er soll eine URL Umschreibung haben.
In die Datei /wp-content/themes/MYTHEME/funktions.php fügen wir folgende Zeilen hinzu:

add_action( 'init', 'create_post_type' );
function create_post_type() {
     register_post_type( 'urteil',
          array(
               'labels' => array(
                    'name' => __( 'Urteile' ),
                    'singular_name' => __( 'Urteil' )
               ),
               'public' => true,
               'has_archive' => true,
               'rewrite' => array('slug' => 'urteile'),
          )
     );
}

Sollte die Datei dort nicht liegen, dann legen wir sie vorher an.
Nachdem die Datei gespeichert wurde, finden wir den neuen Post-Type schon in unserem Administrations Backend:

Urteile_‹_CappuccinoSoft_—_WordPress

Ein Klick auf „Erstellen“ öffnet bereits den Editor für einen neuen Beitrag, allerdings fehlen hier noch die gewünschten Felder. Standardmäßig haben wir hier nur einen Titel und einen Editor für den Content. Das ändern wir jetzt.

Damit die neu definierten Felder nicht einfach chaotisch über die Seite verteilt werden, hat WordPress das Konzept der sogenannten Meta-Boxen umgesetzt. Hier können jeweils mehrere Eingabefelder gruppiert und mit einem Gruppennamen versehen werden. Auch kann man sie leicht mit der Maus hin und herschieben, um die Editor Seite den eigenen Arbeitsgewohnheiten entsprechend zu gestalten.
Erledigt wird das Ganze mit der Funktion add_meta_box(), die wir hier in eine eigene Funktion packen:

function add_the_box() {
     add_meta_box(
          'urteile_metabox',
          'Urteil Metadaten',
          'echo_box_contents',
          'urteil'
     );
}

Die Parameter der Funktion sind
id (die Id der späteren Box),
title (Die Titelzeile der Box)
callback (der Name einer Callbackfunktion, die hier aufgerufen werden soll)
post_type (der Name des Post-Types, bei welchem die Box Verwendung finden soll.

Es gibt noch eine Reihe weiterer optionaler Parameter, die in der WordPress Dokumentation genauer beschrieben sind.

In der Callback Funktion geben wir die benötigten Formularfelder aus, die wir uns in der Box wünschen (Aktenzeichen, Gericht und Datum):

function echo_box_contents() {
     wp_nonce_field( 'the_meta_box', 'the_meta_box_nonce' );
     $custom_fields = get_post_custom();
 
     $aktenzeichen = $custom_fields['aktenzeichen'][0];
     $urteils_datum = $custom_fields['urteils_datum'][0];
     $gericht = $custom_fields['gericht'][0];
 
     echo '<label for="aktenzeichen">Aktenzeichen:</label> ';
     echo '<input id="aktenzeichen" name="aktenzeichen" size="25" type="text" value="'.esc_attr( $aktenzeichen ).'" />';
     echo '<label for="gericht">Gericht:</label> ';
     echo '<input id="gericht" name="gericht" size="25" type="text" value="'.esc_attr( $datum ).'" />';
     echo '<label for="urteils_datum">Datum des Urteils:</label> ';
     echo '<input id="urteils_datum" name="urteils_datum" size="25" type="text" value="'.esc_attr( $urteils_datum ).'" />';
}

Unsere Metabox sieht jetzt so aus:

Neuen_Beitrag_erstellen_‹_CappuccinoSoft_—_WordPress

Was uns jetzt zum Glück noch fehlt, ist ein Eingabefeld für den eigentlichen Kommentar zum Urteil. Das bauen wir uns im nächsten Teil ein und versehen es mit einem Editor, der uns ermöglichen soll auch die Texte zu Formatieren.