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.

WordPress-Wochenrückblick KW22: keine Auto-Updates für 4.9.6 und mehr

Wegen der größeren Menge neuen Codes in 4.9.6 hat sich das Core-Team entschieden, die automatischen Updates für einen Tag nicht aktiv zu schalten, um potenzielle Probleme abzuwarten. Davon gab es dann auch welche im Zusammenhang mit Plugins, die den falschen Hook für die neuen Datenschutz-Tools nutzen und dadurch einen White-Screen erzeugen. Aus diesem Grund hat das Team sich dazu entschieden, die automatischen Updates nicht zu aktivieren. WordPress-Wochenrückblick KW22: keine Auto-Updates für 4.9.6 und mehr weiterlesen

Bessere WordPress-Performance durch die Nutzung von Elasticsearch

Neulich sollte ich die Performance einer WooCommerce-Installation mit mehreren 10.000 Produkten verbessern. Auf normalen Seiten von WordPress war die Site bereits schnell, nur auf Archiv-Seiten für Produkte hat die Ladezeit Probleme gemacht. Über den Beitrag »What does it take to scale WooCommerce?« von Chris Lema bin ich dann auf den Lösungsansatz Elasticsearch gestoßen, das sich über ElasticPress leicht mit WordPress verbinden lässt – ElasticPress unterstützt auch WooCommerce. Dabei werden die Anfragen von WordPress nicht an die MySQL-Datenbank sondern an Elasticsearch gestellt.

Also nicht lange überlegt und ausprobiert. Das Ergebnis: eine deutliche Verbesserung der Ladezeit, auf unter eine Sekunde ⚡

Wenn ihr also mal mit größeren Installationen zu tun habt und die Datenbank der Flaschenhals zu sein scheint, probiert einmal den Einsatz von Elasticsearch aus 🙂

Gravatare und Emoji-Fallbacks für WordPress-Sites vom eigenen Server laden

Vermutlich habt ihr es schon mitbekommen: bald tritt die DSGVO in Kraft. In dem Zusammenhang ist es eine gute Idee (wäre es vorher auch schon gewesen, aber man (also ich jedenfalls) hat sich ja nicht so viele Gedanken gemacht wie jetzt …), die Aufrufe externer Ressourcen – und damit die Übertragung der IP-Adresse des Users an einen anderen Server – von einer Website auf zwingend Notwendiges zu reduzieren.

Bei WordPress gibt es mit dem Emoji-Fallback für ältere Browser und der Gravatar-Funktion zwei Aspekte, die oft aktiv sind und Anfragen an einen anderen Server schicken. Nun könnten diese beiden Funktionen natürlich einfach deaktiviert werden, aber es gibt auch andere Wege. Hier stelle ich zwei Plugins vor, die datenschutz-technisch zumindest unbedenklicher sein sollten als die eingebauten Lösungen von WordPress (aber ich bin natürlich kein Anwalt). Gravatare und Emoji-Fallbacks für WordPress-Sites vom eigenen Server laden weiterlesen