Archiv der Kategorie: Custom Fields (benutzerdefinierte Felder)

Turnverein die erste Liste: Mitglieder-Adressen

Ausgabe Adressenliste

Alle alten Programmierer lieben Listen, und wir können uns aus unseren schönen Stammdaten schon eine erste Ausgabe bauen: Namen, Adressen und Telefonnummern nämlich, da brauchen wir gar nichts weiter dazu als unser gutes altes Arbeitspferd PHP Code for Posts. Unsere eigene Tabelle mitglieder_stamm kann nämlich vom $wpdb-Objekt genau so angesprochen werden wie die WordPress-eigenen Tabellen, liegt ja in der selben Datenbank.

Tabelle als Konstante definieren

Da wir ja ganz am Ende wieder auf unsere Originaltabelle savecontactform7_1 switchen wollen, lege ich den Namen der aktuellen Tabelle auf eine Konstante und gebe den Tabellennamen im Kopf mit aus, damit wir wissen wo wir arbeiten.

/*****Haupttabelle Name als Konstante definieren*******/
 define("MAINTABLE","mitglieder_stamm");

echo "<h2>Mitglieder Adressenliste</h2>";

echo "Aktuelle Tabelle =&nbsp".MAINTABLE."<br>";

Der Select ist dann ganz simpel:

global $wpdb;
        $alleposts = $wpdb->get_results( "SELECT * from ".MAINTABLE."");

Ausgabe als Tabelle

Wie gewohnt mit einer Foreach-Schleife, das haben wir schon oft genug gemacht, da spare ich mir jetzt nähere Kommentare:

foreach_adressen

foreach_adressen

Das reicht schon, wir bekommen jetzt alle eingegebenen Testdaten tabellarisch angezeigt.

adressenliste

adressenliste

Das war jetzt zu einfach, nicht wahr? Bitte sehr, wir erweitern unsere Möglichkeiten jetzt gleich kräftig, aber dazu gibts einen neuen Beitrag.

Eigene Tabellen – schließlich heißt es „MeinSQL“

MySQL läßt sich so schön übersetzen

Mir gefällt auch die Semantik: das ist „Mein SQL“, hier kann ich schalten und walten wie ich will, kann Tabellen und Abfragen anlegen und verknüpfen, kann sortieren und inserten und updaten nach Lust und Laune, und Open Source und kostenlos ist es obendrein. MySQL bietet wirklich unbegrenzte Möglichkeiten und ist flexibel ohne Ende. Über den genialen phpMyAdmin steht auch eine professionelle Verwaltungsoberfläche zur Verfügung, die keine Wünsche offenläßt. Also, warum nutzen wir dann dieses Potential nicht zur Erweiterung von WordPress?

Gut gemeint, bedingt brauchbar: Benutzerdefinierte Felder

Einleitung

Als vor ein paar Jahren die benutzerdefinierten Felder (Custom Fields) in WordPress eingeführt wurden, wurde das als großer Schritt in Richtung CMS hochgelobt und gleich mit -zig Anwendungsbeispielen unterfüttert. Benutzerdefinierte Felder sind dafür gedacht, die Beiträge mit weiteren Daten anzureichern, das kann ganz unterschiedliche Anwendungen haben. Man könnte z.B. in einem Bücherblog die ISBN-Nummer des jeweils besprochenen Buches in ein benutzerdefiniertes Feld eintragen, man könnte in einem kleinen Online-Shop zu einzelnen Artikeln die Preise hinterlegen, man könnte in einem Mitgliederverzeichnis für einen Verein verschiedene Daten zu den einzelnen Mitgliedern abspeichern (Geburtsdatum, Telefonnummer, Adresse).

OK, Feld ist gespeichert. Und jetzt?

Wenn man seine benutzerdefinierten Felder in den Beiträgen auch sehen möchte, muß man sie in den Code der entsprechenden PHP-Datei (z.B. single.php) eintragen, das sieht dann etwa so aus:

<?php get_post_meta($post_id, '$key', $single); ?>

Dabei ist die $post_id natürlich die ID des aktuellen Beitrags, das $key ist der Platzhalter für den Namen des benutzerdefinierten Feldes, und $single weist WordPress an, einen einzelnen String auszugeben (alternativ ginge auch ein Array, wenn ein Custom Field mehrere Werte enthält, aber das lassen wir jetzt mal weg).

Ein Beispiel wäre jetzt hier mal der Preis zu einem Beitrag, der $key wäre hier schlicht „Preis“:

benutzerdefiniert_preis

benutzerdefiniert_preis

Was passiert hinter den Kulissen auf der Datenbank?

In der Tabelle wp_postmeta landet ein neuer Eintrag mit einer laufenden meta_id:

post_meta_custom_field

post_meta_custom_field

Hier wird über die post_id der Name und der Wert des benutzerdefinierten Feldes festgehalten. Der meta_value ist übrigens ein Longtext, also hier können sie jede Menge Text (max. 4.294.967.295 Byte) eingeben!

Sie können allerdings auch jede Menge Unsinn eingeben, statt dem Preis in € das Tagesdatum zum Beispiel, oder auch unsinnige Werte wie „Zwofuffzig“, WordPress ist das egal. Die Nachteile hiervon liegen auf der Hand, und deswegen gibt es auch Plugins, die die Verwaltung von Custom Fields erheblich verbessen.

Das Plugin Custom Field Template

Diese Plugin ermöglicht es, die Eingabebereiche von benutzerdefinierten Feldern einzugrenzen. Mit Hilfe von definierbaren Eingabefeldern, Radio-Buttons, Checkboxes usw. wird es dem Benutzer sehr vereinfacht, sinnvolle Eingaben zu machen. Das ist alles gut und schön und auch sehr professionell gemacht, aber mir gefällt das alles nicht so recht, und ich sage auch gleich, warum.

Wer tippt den ganzen Datenhaufen ein?

Um mal bei dem Anwendungsbeispiel mit dem kleinen Onlineshop zu bleiben: angenommen, man legt für jeden Artikel einen Beitrag an, hübsch mit Bild und kleinem Text. Dann könnte man ein benutzerdefiniertes Feld für den Preis anlegen, vielleicht noch eins für die Artikelnummer, und interessant wäre vielleicht auch der noch Lagerbestand, wieviele Stück noch verfügbar sind. In einem normalen kleinen Laden hat man hierfür zumindest eine Excel-Liste, in der man die ganzen Artikel verwaltet. So, und jetzt kommen die Custom Fields: das soll man alles per Hand einhacken? Nicht in echt, oder?

Oder sehen wir uns mal das Mitgliederverzeichnis eines Vereins an: Miitgliedsnummer, Name, vollständige Adresse, Geburtsdatum, Funktion… da gibt es jede Menge Daten, die hineingehören. Und die soll man alle per Hand erfassen? Ja mir wannsd net gangst, wie man auf bairisch sagt, zu Hochdeutsch: „Das geht ja wohl gar nicht!“

Letztes Beispiel: Bei meiner Modeldatenbank hätte ich zu jedem Model (1 Model=1 Beitrag) sage und schreibe 34 benutzerdefinierte Felder auszufüllen: Körpergröße, Kleidergröße, Schuhgröße, Haarfarbe, Augenfarbe, Oberweite… usw. usf, was halt so alles zu einer Modelsedcard gehört, und das ist eine Menge Holz! Also nee echt nicht, das hacke ich da nicht per Hand rein. Schon gar nicht, weil ich die ganzen Modeldaten eh über ein Contact Form 7-Formular erfasse und sowieso in der Datenbank gespeichert habe.

Und bevor wir jetzt darüber nachdenken, wie man die passenden Einträge zu den benutzerdefinierten Feldern in der wp_postmeta aus unseren Excel-Listen oder MySQL-Tabellen automatisiert erzeiugen könnten – nicht wahr, liebe alte Programmierer, daran habt ihr sofort gedacht! Also, das machen wir NICHT. Wir machen uns das Leben deutlich einfacher.

Wir verwenden eigene Tabellen

Aber dazu gibt es definitiv einen neuen Beitrag, dieser hier ist lang genug geworden.