Gutenberg: Core-Block mit Element umschließen

Gestern stand ich vor dem Problem, dass der Tabellen-Block in Gutenberg im Frontend nicht von einem div umschlossen wird, sondern direkt als table ausgegeben wird. An sich natürlich super, dass da kein überflüssiges Markup rauskommt – für meine Lösung, um die Tabelle responsive zu bekommen, brauche ich aber ein Wrapper-Element. Hier zeige ich, wie sich Core-Blöcke mit einem Element umschließen lassen. Gutenberg: Core-Block mit Element umschließen weiterlesen

»Related Posts«-Funktion von ElasticPress mit Elasticsearch 6 nutzen

Vor einiger Zeit habe ich auf Elasticsearch 6 aktualisiert, woraufhin die ElasticPress-Funktion zur Anzeige ähnlicher Beiträge nicht mehr funktioniert hat. Erst dachte ich, das habe mit einem ElasticPress-Issue zu tun – letztlich lag es aber an einem von ElasticPress genutzten Parameter, der in Elasticsearch 6 nicht mehr unterstützt wird und angepasst werden muss. »Related Posts«-Funktion von ElasticPress mit Elasticsearch 6 nutzen weiterlesen

WordPress-Wochenrückblick KW24: Blockieren von Plugin-Installationen bei nicht erfüllten Anforderungen und mehr

Das PHP-Team hat die Arbeit am Design und der Formulierung der Benachrichtigung fertiggestellt, dass ein Plugin nicht installiert werden kann, weil die PHP- und/oder WordPress-Version zu niedrig ist. Jetzt wird am Commit in den Core gearbeitet. WordPress-Wochenrückblick KW24: Blockieren von Plugin-Installationen bei nicht erfüllten Anforderungen und mehr weiterlesen

Mit Travis CI auf Kompatibilität mit einer bestimmten PHP-Version prüfen

Mein Lazy-Loader-Plugin benötigt PHP 5.3 oder höher. Wenn sich User darauf verlassen, ist es ärgerlich, wenn durch eine Unachtsamkeit (wie etwa die Nutzung der []-Syntax für Arrays) in einem Patch- oder Minor-Release diese Mindestanforderung steigt.

Um sowas zu verhindern, lasse ich mit Travis CI jetzt jeden Release auf Kompatibilität mit PHP 5.3 testen. Mit Travis CI auf Kompatibilität mit einer bestimmten PHP-Version prüfen weiterlesen

Suchen und Ersetzen in MySQL

Nebenher bin ich gerade dabei, Akronyme – zum Beispiel »PHP« – mit einem span-Element zu umschließen, um sie in Kapitälchen anzuzeigen. Das ginge natürlich manuell, wäre aber etwas zeitaufwendig. Also habe ich mal geschaut, ob es etwas wie Suchen und Ersetzen in MySQL gibt, und siehe da: REGEXP_REPLACE heißt das Zauberwort.

So lassen sich zum Beispiel die Vorkommen von WOFF in allen Beitragstiteln eines Blogs über den folgenden Befehl mit dem Markup umschließen (es empfiehlt sich vorher ein Backup zu machen):

UPDATE `wp_posts` SET `post_title` = REGEXP_REPLACE(post_title COLLATE utf8mb4_bin, 'WOFF', '<span class="smcp">WOFF</span>' ) WHERE `ID` = 4691

Als ersten Parameter wird an REGEXP_REPLACE der String übergeben, der durchsucht werden soll – in unserem Fall geben wir hier die Tabellenspalte an. Der zweite Parameter ist der gesuchte String und der dritte die Ersetzung. Die Angabe von COLLATE utf8mb4_bin (hier müsst ihr die Kollation gegebenenfalls anpassen, je nachdem, was ihr nutzt) ist wichtig, damit Groß- und Kleinschreibung beachtet wird.

Wie auf der Doku-Seite von MariaDB zu lesen ist (und der Name vermuten lässt), kann mit REGEXP_REPLACE auch über reguläre Ausdrücke gesucht werden. Bei meinen Wochenrückblicken sah das für das KW so aus:

UPDATE `wp_posts` SET `post_title` = REGEXP_REPLACE(post_title COLLATE utf8mb4_bin, 'KW([0-9]+)', '<span class="smcp">KW</span>\\1' ) WHERE `ID` = 4691

Über \\1 wird in dem Ersetzungs-String der Teil innerhalb der Klammern des regulären Ausdrucks eingesetzt: die Kalenderwochen-Zahl.