Von allen guten und bösen Geistern verlassen

Die Verwendung von Post Meta Feldern ist in WordPress mit einigen Tücken verbunden. Nicht nur im Zusammenhang mit Brettspielen wird man darüber stolpern.

Vorgeschichte und Jubiläum

Um den Zusammenhang zwischen Post Meta Feldern bei WordPress und Brettspielen zu verstehen, müssen wir die Zeit um gut ein Jahr zurückdrehen. Letztes Jahr im November gab es für mich eine ganze Reihe von gründen, mich intensiver mit Elementor zu beschäftigen. In der Agentur kommt der Page Builder immer mehr zum Einsatz. Projekte lassen sich damit schneller und kostengünstiger realisieren. Was gerade in unserem Kundenumfeld zu einer erheblich höheren Zufriedenheit führt. Natürlich kann man Webseiten auch von Hand stricken, nur kostet Maßarbeit eben auch etwas mehr. Diese Diskussion will ich hier aber nicht vertiefen.

Privat hatte ich Elementor auch schon ins Auge gefasst, um damit den Relaunch meines Blogs zu stemmen. Möglichkeiten auszuloten, neues ausprobieren — so was mache ich ungern am offenen Herzen eines Live-Projektes. Weder bei mir privat noch bei Agenturkunden. Kein Problem, ich hab für so was eine ganze Reihe von Optionen. Etwa meinen Spielplatz bei alphalupus.de. Dort setzte ich dann WordPress mit Elementor auf und machte mir Gedanken, an welchem korrekten Beispiel ich ausprobieren und lernen würde. Brettspiele lagen da ziemlich nah, also setzte ich mich hin und dachte nach. Eine einfache Landingpage zum Thema, eingebundene RSS-Feeds von YouTubern und Bloggern, vielleicht sogar noch einen eigenen Datentyp für interessante Spiele.

Krumme Wege mit Post Meta Feldern

Krumme Wege mit Post Meta Feldern

Unfreundliche Begegnungen der 3. Art

Was dann folgte, war der Rauswurf aus zwei privaten Facebook-Gruppen. Weil ich es in den Augen des Administrators gewagt hatte, ihm Konkurrenz zu machen. Dabei hatten die Gruppen nichts mit meinem Projekt zu tun. Wie dem auch sei, nach einer Phase der Niedergeschlagenheit wurde das für mich ein Ansporn, das Projekt Brettspiele Website richtig in Angriff zu nehmen. Mittlerweile läuft das Ganze unter der Domain brettspiel-rezensionen.de.

Bis Ende vor wenigen Tagen hatte ich auch noch via RSS-Feed Teaser zu anderen Spielebloggern und YouTubern auf der Startseite. Nach meinem Erlebnis vom vergangenen Freitag und der „herzlichen Solidarität“ wurde das jetzt vollständig entfernt. Ehrlich, ich muss nicht auch noch Werbung für andere machen, wenn deren Aufmerksamkeit für mich in einem Arschtritt besteht.

Allerdings musste ich jetzt natürlich die Lücken auf der Startseite füllen. Daher gibt es jetzt Blogbeiträge von mir zum Thema (die werden mit der Zeit mehr, da ich von vorne nach hinten Beiträge aus meinem Blog hier übernehme). Zudem gibt es interessante Neuerscheinung und seit heute auch die Top fünf Spiele des Jahres. Damit kommen wir dann endlich zu Post Meta Feldern bei WordPress.

String-Tanz mit Post Meta

Mal eben die Daten ausgeben lassen, die ich ehedem schon habe. Etwa bei den zuletzt gespielten Brettspielen. Einfach nur die Daten nach Anzahl der gespielten Partie sortieren lassen, fertig ist die Top-Liste. Dachte ich. Das Ergebnis sah deutlich anders aus. Nach Längerem probieren kam ich dann dahinter, dass mit den numerischen Werten bei den Spielen etwas nicht stimmt.

Für die Spiele habe ich einen eigenen Datentyp (Custom Post Types) in WordPress mittels Pods angelegt. Dort stand als Feldtyp für das Post Meta Feld „Partien korrekt „Number“.

Mittlerweile weiß ich, dass das nur Auswirkungen auf die Eingabe im Backend hat. WordPress selber speichert ausnahmslos alle Daten aus den Post Meta Feldern als String in der Datenbank ab. Im Rahmen einer Datenbankabfrage Strings zu sortieren, ergibt bei Zahlen dann interessante Ergebnis. So ist dann 43 kleiner als 7. Das stellte ich bei der Sortierung nach Anzahl der Partien dann auch fest.

Die Lösung liegt hier in der Programmierung einer eigenen Shortcode-Funktion. Diese ruft dann die Daten mittels $wpdb->get_results ab.
Die dazugehörige SQL-Query ist dann „etwas“ komplexer:

SELECT * FROM wp_posts INNER JOIN wp_postmeta ON  wp_posts.id = wp_postmeta.post_id WHERE wp_postmeta.meta_key='partien_laufendes_jahr' ORDER BY CAST(wp_postmeta.meta_value as UNSIGNED) DESC LIMIT 5

Hier ist CAST notwendig, um den Typ String in einen nummerischen Wert umzuwandeln. Warum WordPress überhaupt Post Meta Felder so einschränkt? Kann man sich natürlich gerne fragen. Das hat Vor- aber auch Nachteile, wie man an dem Beispiel erkennen kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

DSGVO Cookie Consent mit Real Cookie Banner