Auf ein Neues beim Projekt26

Torsten Landsiedel hatte für dieses Jahr das Projekt26 gestartet, bei dem alle zwei Wochen ein Blog-Artikel und ein Kommentar unter einem anderen Artikel geschrieben werden sollte. Bis Anfang Juni war ich auch noch gut dabei, habe dann allerdings stark nachgelassen.

Torsten hat auf seinem Blog im Beitrag »Projekt26 – Jetzt erst recht!« eine schöne Zusammenfassung geschrieben, und es wird auch im nächsten Jahr wieder ein Projekt26 geben. Ich werde dabei sein und diesmal hoffentlich auch bis zum Ende durchhalten.

Mein Problem mit statischen Gutenberg-Blöcken

Bei Gutenberg-Blöcken gibt es zwei Möglichkeiten: entweder wird das Block-Markup direkt beim Speichern eines Inhalts generiert und fertig in der Datenbank gespeichert (statisch). Oder es wird nur der Block-HTML-Kommentar in der Datenbank gespeichert, gegebenenfalls mit Attributen, und dann vor der Anzeige im Frontend das Markup dynamisch generiert.

Theoretisch sind dynamische Blöcke für Fälle wie Anzeige der letzten Beiträge gedacht, und statische für alle anderen Fälle, wo sich nichts ändern soll, ohne das bei dem Block etwas geändert wird. Allerdings gibt es bei den statischen Blöcken ein ziemlich großes Problem.

"Mein Problem mit statischen Gutenberg-Blöcken" Weiterlesen

Lazy Loading in WordPress 5.5 – warum Lazy Loader trotzdem weiter nützlich ist

WordPress 5.5 bringt Unterstützung für das Markup zum nativen Lazy Loading mit. Dadurch kommt die Frage auf, ob die vielen Lazy-Loading-Plugins jetzt ausgedient haben. Ich werde das hier für mein Plugin Lazy Loader beantworten.

"Lazy Loading in WordPress 5.5 – warum Lazy Loader trotzdem weiter nützlich ist" Weiterlesen

Gutenberg-Farboption mit der Theme-Farbpalette erstellen

Einige Core-Blöcke kommen bereits mit Optionen für Text- und Hintergrundfarbe, etwa der Absatz-Block. Hier zeige ich, wie eine Farb-Option mit den vom Theme definierten Farbwerten für einen Block erstellt werden kann.

"Gutenberg-Farboption mit der Theme-Farbpalette erstellen" Weiterlesen

Verzeichnis mit vielen Dateien in mehreren Schritten mit PHP kopieren

Ich arbeite momentan an einem kleinen eigenen Projekt, bei dem unter anderem ein WordPress-Plugin eine Kopie der Installation erstellen muss. Da ich die Server-Umgebung der potenziellen User nicht kenne, kann ich weder davon ausgehen dass ich dafür Linux-Befehle nutzen kann, noch das ein hoher Wert für die PHP-max_execution_time gesetzt ist.

Das Kopieren muss also über PHP ablaufen und auch funktionieren, wenn zum Beispiel nur 30 Sekunden Skript-Laufzeit zur Verfügung stehen.

"Verzeichnis mit vielen Dateien in mehreren Schritten mit PHP kopieren" Weiterlesen

Block-Attribute abhängig von der Block-Position setzen

In einem kürzlich abgeschlossenen Projekt wollte ich für die Bilder in einem Slider-Block das sizes-Attribut nutzen. Da der Slider aber nicht immer in derselben Situation angezeigt wird, also beispielsweise über die volle Breite des Viewports (ein sinnvoller Wert für sizes wäre hier 100vw), sondern auch in normaler Content-Breite oder innerhalb von Spalten-Blöcken, musste der Wert für ein optimales Ergebnis abhängig von der Position des Slider-Blocks sein.

"Block-Attribute abhängig von der Block-Position setzen" Weiterlesen

Anchor-Support für dynamische Blöcke

Bei einigen Core-Gutenberg-Blöcken wie etwa der Überschrift können in der Block-Sidebar unter dem Punkt Erweitert nicht nur eigene CSS-Klassen eingefügt werden, sondern auch ein HTML-Anker. Damit wird das id-Attribut des Elements gesetzt, sodass mit einem Sprungmarkenlink darauf verwiesen werden kann.

Alles was dafür getan werden muss, ist bei der Block-Registrierung den folgenden Code anzugeben:

supports: { anchor: true, },
Code-Sprache: JavaScript (javascript)

Einfach, oder? Ja, es sei denn, es handelt sich bei dem Block um einen dynamischen Block, also einen der in der save-Methode null zurückgibt und sich in einer PHP-Funktion um das Rendering kümmert. In dem Fall wird zwar mit dem oben stehenden Schnipsel das Feld erzeugt, wir kommen aber nicht an den eingegebenen Wert dran, da er nicht als Attribut in der PHP-Funktion ankommt.

Ich habe einen nicht so schönen kleinen Umweg gefunden, um es trotzdem umzusetzen.

"Anchor-Support für dynamische Blöcke" Weiterlesen

Gefiltertes Block-Markup für Nicht-Admin-User durch wp_kses

WordPress lässt standardmäßig nur Administratoren ungefiltert HTML im Editor eingeben und speichern. Bei allen anderen User-Rollen wird weggefiltert, was nicht in einem festgelegten Set von Elementen und Attributen vorhanden ist, etwa svg-Elemente oder das sizes-Attribut für img-Elemente. Das betrifft auch HTML, das von Blöcken und nicht direkt von Usern generiert wird, was zu interessanten Ergebnissen führen kann.

"Gefiltertes Block-Markup für Nicht-Admin-User durch wp_kses" Weiterlesen

Eigenen Block immer in voller Breite im Editor einfügen

Normalerweise werden Blöcke alle in derselben Standard-Breite in den Gutenberg-Editor eingefügt. Abhängig vom Block und davon, ob das Theme es unterstützt, gibt es noch die Möglichkeit eine weite oder die volle Breite zu aktivieren, damit der Block im Frontend über die normale Inhaltsbreite hinausgeht.

In einem Projekt hatte ich den Fall, dass ein eigener Block immer über die gesamte Breite gehen sollte, ohne Änderungsoption für den User. Im Frontend habe ich einfach entsprechend das Styling angepasst, aber im Backend sind ein paar weitere Anpassungen notwendig, da bei einem Full-Align-Block die Controls zum Umsortieren nicht links neben dem Block dargestellt werden, sondern darüber.

"Eigenen Block immer in voller Breite im Editor einfügen" Weiterlesen

Block-Variationen in Gutenberg erstellen

Mit WordPress 5.4 wird die Block Variations API in WordPress Einzug halten. Damit ist es möglich, Variationen von Blöcken zu erstellen, die dann auch als eigene Einträge im Block-Inserter angezeigt werden. Ein Beispiel aus dem Core sind die Social-Media-Buttons, die alle eine Variante des Social-Link-Blocks sind.

"Block-Variationen in Gutenberg erstellen" Weiterlesen