{"id":156,"date":"2017-02-16T06:58:00","date_gmt":"2017-02-16T05:58:00","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=156"},"modified":"2017-02-16T17:40:53","modified_gmt":"2017-02-16T16:40:53","slug":"noch-ne-runde","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/02\/16\/noch-ne-runde\/","title":{"rendered":"Noch &#8217;ne Runde \u00fcber Attachments, speziell Bilder"},"content":{"rendered":"<p>Ich hab ja eigentlich wieder ein bi\u00dfchen Spa\u00df auf der Datenbank versprochen, aber ich f\u00fcrchte, jetzt wirds erstmal eher weniger lustig. Wir waren ja bei unseren Attachments vom Typ image\/jpeg stehengeblieben, und haben schon gesehen, da\u00df die in der wp_posts gespeichert werden. Jetzt gehts aber mal ein bi\u00dfchen ans Eingemachte: welche Informationen zum Bild stehen wo und in welcher Tabelle?<\/p>\n<h2>Nur mal so zur Erinnerung: Bildattribute in HTML<\/h2>\n<p>Das absolute Minimum, was zum Einf\u00fcgen eines Bildes gebraucht wird, sieht so aus:<\/p>\n<pre>&lt;img src=\"bild01.jpg\" alt = \"Erstes Bild\"&gt;<\/pre>\n<p><em>bild01.jpg<\/em> ist die URL, die angibt auf welchem Pfad das Bild tats\u00e4chlich liegt, und <em>alt<\/em> ist der Alternativtext, der so wichtig f\u00fcr die Screenreader ist und auch angezeigt wird, wenn das Bild noch nicht vollst\u00e4ndig geladen ist. Es gibt auch noch mehr Bildattribute, den Titel und Gr\u00f6\u00dfenangaben usw., aber wir lassens hier mal gut sein, kann ja auch jeder selber googlen, hier bei <a href=\"http:\/\/wiki.selfhtml.org\/wiki\/HTML\/Multimedia_und_Grafiken\/Grafiken\">Wiki zum Beispiel<\/a><\/p>\n<h2>Bildattribute in WordPress<\/h2>\n<p>Wenn man sich so einen Datensatz von einem JPEG-Attachment in der wp_posts im phpmyadmin mal n\u00e4her anschaut, kommt man zuerst mal durcheinander. Da steht etwas(oder auch nichts) in post_title, etwas in post_content, und guxtu: bei post_excerpt und post_name kann auch noch was drinstehen. Was ist hier was? Wenigstens kann man klar und deutlich sehen, da\u00df in guid die URL des Bildes drinsteht, das ist doch immerhin schon was. Aber ansonsten gibts hier Kraut und R\u00fcben, und falls sie den Alternativtext vermissen sollten (so sie einen eingegeben haben), der ist hier nicht zu finden. Der steckt n\u00e4mlich in einer anderen Tabelle, in der wp_postmeta hat er sich versch\u00e4mt versteckt! Da gibt es doch tats\u00e4chlich\u00a0 einen Datensatz mit einem Fremdschl\u00fcssel, der die ID unseres Bild-Datensatzes aus der wp_posts enth\u00e4lt. Da wo im Feld meta_key das Schl\u00fcsselwort _wp_attachment_image_alt steht, da steckt daneben im Feld meta_value der alt-Text. Gut, nicht?<\/p>\n<h2>Warum gibt es keine eigene Tabelle f\u00fcr Attachments?<\/h2>\n<p>Ja, Dunnerlittchen! Wieso hat man denn nicht f\u00fcr die Attachments eine eigene Tabelle angelegt, mit anst\u00e4ndigen Feldnamen f\u00fcr alt-Text, Titel usw., mit einer einzigen sauberen Verkn\u00fcpfung \u00fcber die ID des Beitrags, zu dem die Bilder geh\u00f6ren? Stattdessen werden hier die eigentlich f\u00fcr Posts gedachten Felder post_title, post_content und post_excerpt hergew\u00fcrgt, und das alt-Attribut ganz woanders versteckt. Da soll doch der &#8230;. Blitz dreinschlagen, um es mal ganz gem\u00e4\u00dfigt auszudr\u00fccken. Das kommt davon, wenn man \u00c4pfel und Birnen (Posts und Attachments) in ein und dieselbe Tabelle stopft, obwohl es doch krass unterschiedliche Entit\u00e4ten sind.<\/p>\n<p>Wenn sie \u00fcbrigens beim Bilder hochladen vergessen haben,\u00a0 alt-Texte anzugeben, wird der jeweilige Dateiname daf\u00fcr verwendet. Das ist g\u00e4ngige Praxis, aber nicht sch\u00f6n, weil der Screenreader dann eben -zig mal DSC01648 oder sowas vorliest, und das bringt nat\u00fcrlich \u00fcberhaupt nichts.<\/p>\n<h2>Und wenn ich jetzt einfach alle alt-Texte korrigiere?<\/h2>\n<p>Gemach, gemach, so einfach ist das nicht. Wenn sie jetzt im visuellen Editor hingehen und das jeweilige Bild bearbeiten, k\u00f6nnen sie zwar einen neuen, besseren alt-Text eingeben, aber der wird mitnichten in der Datenbank\u00a0im Feld meta_value gespeichert! Der landet nur im img-src-Tag im post_content, und die Datenbank kriegt nichts mit davon. Wenn sie das Pferd jetzt andersherum aufz\u00e4umen und in der Mediathek das richtige Bild raussuchen, hier auf Bearbeiten gehen und da einen neuen alt-Text eingeben, landet der zwar in der Tabelle wp_postmeta (beim Metakey _wp_attachment_image_alt) aber nicht im Beitrag. Man m\u00fc\u00dfte erst das betreffende Bild aus dem Beitrag l\u00f6schen und aus der Mediathek wieder neu hereinnehmen, dann d\u00fcrfte wieder das Datenbankfeld f\u00fcr den alt-Text herangezogen werden.<\/p>\n<p>Hab ich sie jetzt komplett durcheinandergebracht? Jetzt wissen sie warum ich mir f\u00fcr WordPress eine &#8222;saubere&#8220; separate Attachment-Tabelle w\u00fcnsche!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich hab ja eigentlich wieder ein bi\u00dfchen Spa\u00df auf der Datenbank versprochen, aber ich f\u00fcrchte, jetzt wirds erstmal eher weniger lustig. Wir waren ja bei unseren Attachments vom Typ image\/jpeg stehengeblieben, und haben schon gesehen, da\u00df die in der wp_posts gespeichert werden. Jetzt gehts aber mal ein bi\u00dfchen ans Eingemachte: welche Informationen zum Bild stehen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,9,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/156"}],"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=156"}],"version-history":[{"count":8,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":197,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/156\/revisions\/197"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}