{"id":393,"date":"2017-05-05T16:50:26","date_gmt":"2017-05-05T14:50:26","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=393"},"modified":"2017-05-05T17:51:10","modified_gmt":"2017-05-05T15:51:10","slug":"suchformular-auswertung","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/05\/05\/suchformular-auswertung\/","title":{"rendered":"Suchformular Auswertung (mit komplettem PHP-Code)"},"content":{"rendered":"<h2>Formular wird ausgef\u00fcllt, Abschicken wird gedr\u00fcckt<\/h2>\n<p>Ich setze mal voraus, da\u00df ein wenig Grundwissen in PHP-Formularen vorhanden ist, der Code f\u00fcr das Formular kommt sp\u00e4ter, jetzt geht es erstmal ums Prinzip. Ich zeige nur mal exemplarisch den Code f\u00fcr das Dropdown-Feld f\u00fcr die Fitness:<\/p>\n<p><em>echo &#8218;Fitness ausw\u00e4hlen:&#8216;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;select name = &#8218;auswahl_fitness&#8216;&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;option value=&#8217;%&#8216;&gt;egal&lt;\/option&gt;&#8220;;\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;option value=&#8217;Anf\u00e4nger&#8216;&gt;Anf\u00e4nger&lt;\/option&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;option value=&#8217;Freizeitsportler&#8216;&gt;Freizeitsportler&lt;\/option&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;option value=&#8217;Profi&#8216;&gt;Profi&lt;\/option&gt;&#8220;;<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8220;\u00a0\u00a0 \u00a0&lt;\/select&gt;&lt;br&gt;&#8220;;<\/em><\/p>\n<p>Das Schl\u00fcsselwort &#8222;select&#8220; definiert ein Dropdown-Feld, die &#8222;options&#8220; sind die einzelnen Eintr\u00e4ge. Die &#8222;values&#8220; entsprechen genau unseren m\u00f6glichen Eintr\u00e4gen in der Mitgliederstamm-Tabelle.<\/p>\n<h2>Jetzt kommt die Action<\/h2>\n<p>Der Benutzer w\u00e4hlt also im Dropdown-Feld seine Fitne\u00df aus und macht seine H\u00e4kchen bei den anderen Optionen. Dann klickt er auf &#8222;Abschicken&#8220;, und erst jetzt tritt unser PHP-Skript wirklich in Aktion. Die Benutzereingaben werden aus den Formularfeldern abgegriffen und auf Variable gelegt. Ich belege alle NICHT angekreuzten Optionen auch gleich mit einem % (Prozentzeichen), das ist der Platzhalter f\u00fcr eine beliebige Zeichenfolge in MySQL. Das ist mal der erste Schritt.<\/p>\n<p>Ob der Button &#8222;Abschicken&#8220; gedr\u00fcckt wurde, fragte man mit dem ISSET-Befehl ab, ich setz den mal hier nur mit der ersten Variablenbelegung f\u00fcr die Fitness rein:<\/p>\n<p><em>if ( isset($_POST[&#8222;senden&#8220;]) ) {<\/em><\/p>\n<p><em>(&#8230;hier kommt die Variablenbelegung mit den Formularinhalten&#8230;)<\/em><\/p>\n<p><em>$akt_auswahl_fitness = $_POST[&#8218;auswahl_fitness&#8216;];<\/em><\/p>\n<p><em>}<\/em><\/p>\n<h2>Zugriff auf die Datenbank &#8211; der Select<\/h2>\n<p>Damit aus den Benutzereingaben jetzt auch eine Ausgabe wird, m\u00fcssen wir nat\u00fcrlich auf unsere Datenbank zugreifen, denn in der stecken ja alle relevanten Informationen. Wir machen das wieder mit einem wpdb-Objekt, wie gewohnt, und basteln uns aus den Variablen mit den Benutzereingaben den passenden Select zusammen. Der wird am Ende in etwa so aussehen:<\/p>\n<p><em>$alleposts = $wpdb-&gt;get_results( &#8222;SELECT * from &#8222;.MAINTABLE.&#8220;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0JOIN wp_posts <\/em><\/p>\n<p><em>ON &#8222;.MAINTABLE.&#8220;.id = SUBSTRING_INDEX( wp_posts.post_title,&#8216; &#8218;,1) <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0WHERE wp_posts.post_status LIKE &#8218;publish&#8216;\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.fitness LIKE &#8218;&#8220;.$akt_auswahl_fitness.&#8220;&#8218; <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.tagesfreizeit LIKE &#8218;&#8220;.$akt_auswahl_tagesfreizeit.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.turnen LIKE &#8218;&#8220;.$akt_auswahl_turnen.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.aerobic LIKE &#8218;&#8220;.$akt_auswahl_aerobic.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.fussball LIKE &#8218;&#8220;.$akt_auswahl_fussball.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.basketball LIKE &#8218;&#8220;.$akt_auswahl_basketball.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.feierabend LIKE &#8218;&#8220;.$akt_auswahl_feierabend.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.wochenende LIKE &#8218;&#8220;.$akt_auswahl_wochenende.&#8220;&#8218;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&#8222;);<\/em><\/p>\n<p>Das sieht jetzt erstmal schlimm aus, ist aber gar nicht so kompliziert. Erkl\u00e4rung folgt etwas sp\u00e4ter.<\/p>\n<h2>Zwischenbemerkung: ich hab mal kurz eine Neuerung im Join eingef\u00fchrt<\/h2>\n<p>Wir hatten f\u00fcr die Mitglieder-ID ein benutzerdefiniertes Feld in jedem Beitrag eingef\u00fchrt, erinnern sie sich? Und dann habe ich noch die Regel eingef\u00fchrt, da\u00df jeder Beitrag mit der ID und dem Vornamen des Mitglieds betitelt wird, also etwa &#8222;1 Ferdinand&#8220; oder &#8222;9 Ivonne&#8220;. Das war doppelt gemoppelt, wenn man die Benennung der Beitr\u00e4ge konsequent durchf\u00fchrt und immer die richtige ID-Nummer angibt, kann man sich das benutzerdefinierte Feld glatt sparen und die ID aus dem Beitragstitel extrahieren. Dazu schneidet man den Beitragstitel einfach beim ersten Vorkommen eines Leerzeichens ab, das passiert hier mit der Anweisung:<\/p>\n<p><strong><em>SUBSTRING_INDEX( wp_posts.post_title,&#8216; &#8218;,1)<\/em><\/strong><\/p>\n<p>\u00dcbrig bleibt die numerische ID, und auf die kann man einwandfrei joinen. Voraussetzung ist wie gesagt, da\u00df man beim Anlegen der Mitglieds-Beitr\u00e4ge konsequent arbeitet und immer die richtige ID angibt.<\/p>\n<h2>Die WHERE-Klausel<\/h2>\n<p>Die wird ziemlich lang, weil wir nat\u00fcrlich f\u00fcr jedes Feld aus dem Suchformular eine Bedingung haben. Ich nehm mal die erste raus:<\/p>\n<p><em>WHERE wp_posts.post_status LIKE &#8218;publish&#8216;\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND &#8222;.MAINTABLE.&#8220;.fitness LIKE &#8218;&#8220;.$akt_auswahl_fitness.&#8220;&#8218;<\/em><\/p>\n<p>Den post_status LIKE &#8218;publish&#8216; brauchen wir, damit uns wirklich nur die ver\u00f6ffentlichten Mitgliedsbeitr\u00e4ge ins Netz gehen.<\/p>\n<p>Die n\u00e4chste Bedingung (mit AND drangeh\u00e4ngt) vergleicht einfach nur, ob der Wert des Feldes &#8222;fitness&#8220; gleich dem ist, den wir in der Variable <em>$akt_auswahl_fitness<\/em> gespeichert haben. Dieser Wert kommt nat\u00fcrlich aus dem Dropdown-Feld des Formulars, und kann &#8222;%&#8220; f\u00fcr &#8222;egal&#8220; enthalten, oder er ist mit einer der drei anderen M\u00f6glichkeiten (Anf\u00e4nger, Freizeitsportler, Profi) belegt. Damit fischen wir uns alle Mitglieder-Datens\u00e4tze heraus, die der aktuellen Auswahl Fitness entsprechen.<\/p>\n<p>Die zweite Bedingung lautet:<\/p>\n<p><em>\u00a0AND &#8222;.MAINTABLE.&#8220;.tagesfreizeit LIKE &#8218;&#8220;.$akt_auswahl_tagesfreizeit.&#8220;&#8218;<\/em><\/p>\n<p>Im Tabellenfeld tagesfreizeit kann nur &#8222;ja&#8220; oder &#8222;nein&#8220; drinstehen, und unsere Variable <em>$akt_auswahl_tagesfreizeit<\/em> aus dem Formular enth\u00e4lt entweder ein &#8222;ja&#8220; oder ein &#8222;%&#8220; f\u00fcr egal, damit kriegen wir alle mit Tagesfreizeit oder alle bei denen der Benutzer nichts angew\u00e4hlt hat.<\/p>\n<p>Und so gehts lustig weiter, immer mit &#8222;AND&#8220; drangeh\u00e4ngt die n\u00e4chste Bedingung mit dem n\u00e4chsten Datenbankfeld und der n\u00e4chsten Variablen, bis wir die Liste durch haben. War doch jetzt nicht so schwer, oder?<\/p>\n<h2>Die Ausgabe<\/h2>\n<p>Jetzt fehlt noch die Ausgabe, aber da gibts nicht viel Neues zu erz\u00e4hlen, das machen wir ganz einfach wieder mit einer Foreach-Schleife \u00fcber das Ergebnis unseres Selects, die k\u00f6nnte zum Beispiel so ausehen, als Tabelle formatiert:<\/p>\n<p><em>echo &#8222;&lt;table&gt;&#8220;;\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\/\/ Titelzeile ausgeben<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0echo &#8222;&lt;tr&gt;&lt;td&gt;Turnen&lt;\/td&gt;&lt;td&gt;Aerobic&lt;\/td&gt;&lt;td&gt;Fu\u00dfball&lt;\/td&gt;&lt;td&gt;Basketball&lt;\/td&gt;&lt;td&gt;Tagesfreizeit&lt;\/td&gt;&lt;td&gt;Feierabend&lt;\/td&gt;&lt;td&gt;Wochenende&lt;\/td&gt;&lt;td&gt;Vorname&lt;\/td&gt;&lt;td&gt;Nachname&lt;\/td&gt;&lt;td&gt;Fitness&lt;\/td&gt;&lt;td&gt;Pa\u00dffoto&lt;\/td&gt;&lt;td&gt;Link&lt;\/td&gt;&lt;\/tr&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\/\/Eine Zeile pro Datensatz ausgeben<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0foreach ( $alleposts as $einpost ) { <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;turnen.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;aerobic.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;fussball.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;basketball.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;tagesfreizeit.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;feierabend.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;wochenende.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;vorname.&#8220;&lt;\/td&gt;&#8220;;\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;nachname.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;td&gt;&#8220;.$einpost-&gt;fitness.&#8220;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Link zum Mitgliedsbeitrag ausgeben<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 echo &#8222;&lt;td&gt;&lt;a href =&#8220;.$einpost-&gt;guid.&#8220;&gt;Zum Mitgliedsbeitrag&lt;\/&lt;a&gt;&lt;\/td&gt;&#8220;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;\/tr&gt;&#8220;;<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0} \/\/end foreach<br \/>\n<\/em><br \/>\n<em>echo &#8222;&lt;\/table&gt;&#8220;;<\/em><\/p>\n<p>Haben wir alles schon gehabt, dazu mu\u00df ich glaube ich nicht viel erz\u00e4hlen. Hat doch Spa\u00df gemacht, nicht wahr? Auch wenn es jetzt weniger mit WordPress und mehr mit PHP und MySQL zu tun hatte.<\/p>\n<h2>Kompletter Code des Suchformulars<\/h2>\n<p>Den gibt es hier als gezipptes PHP-Skript. Es sind noch etliche Debug-Ausgaben mit drin, aber die kann sich jeder selber rauskommentieren.<\/p>\n<p><a href=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/05\/suchformular.zip\">Suchformular als ZIP-Datei<br \/>\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Formular wird ausgef\u00fcllt, Abschicken wird gedr\u00fcckt Ich setze mal voraus, da\u00df ein wenig Grundwissen in PHP-Formularen vorhanden ist, der Code f\u00fcr das Formular kommt sp\u00e4ter, jetzt geht es erstmal ums Prinzip. Ich zeige nur mal exemplarisch den Code f\u00fcr das Dropdown-Feld f\u00fcr die Fitness: echo &#8218;Fitness ausw\u00e4hlen:&#8216;; \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;&lt;select name = &#8218;auswahl_fitness&#8216;&gt;&#8220;; \u00a0\u00a0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20,21,7,4],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/393"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=393"}],"version-history":[{"count":7,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/393\/revisions"}],"predecessor-version":[{"id":401,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/393\/revisions\/401"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}