WordPress für 2024 Fit machen

von

in

Ich glaube jeden WordPress Benutzer treiben einige Fehler und die Suche nach den richtigen Einstellungen und Plugins in die Verzweiflung. Auch ich habe mit einigen Fehlern und schwacher Performance zu kämpfen. Bei einigen Dingen konnte mir der Hoster helfen, bei anderen Dingen muss ich die Weiten des Internetzes durch Grasen und Trial-and-Error Fixing betreiben.

Fehlerbeschreibung: Bei jeder Änderung eines Beitrages oder Neuerstellung wird in der Datenbank der Nutzername (Nickname) bearbeitet. Meist hängen sich immer Zahlenkolonnen an -2-2-2-2… Dadurch werden Crawler fast verrückt, weil es jedes Mal alle Beiträge zu einem neuen Autor verschiebt, die es dann natürlich indiziert!

Performance: mit Page Speed Insights liegt meine Desktop-Performance trotz Cache immer nur bei 70 Punkten, Mobil noch schlechter – zwischen 45 und 60!

Was machmer jetzt?

Zuerst muss ich mal Noxlay™ von Omako danken für sein Brainstorming! Kaffee kommt!

Man muss sich inzwischen Gedanken machen, wie die Website Sicherheit, Benutzer und technische Standards erfüllt. Es genügt nicht mehr nur zu posten, ein schickes Design zu haben und möglichst auch ans SEO zu denken. Wichtige Security Header sollten inzwischen mitgegeben werden, dabei ist das aber alles andere als Standard bei den Hostern. Prüfen kann man das über https://observatory.mozilla.org einfach und tief. Für mich brachte es der .htaccess Eintrag:

BEGIN Security Headers

Header set Strict-Transport-Security „max-age=31536000; includeSubDomains; preload“ env=HTTPS Header set X-Frame-Options „SAMEORIGIN“ Header set X-Content-Type-Options „nosniff“ Header set Referrer-Policy „no-referrer“ Header set X-XSS-Protection „1; mode=block“ Header set Permissions-Policy „autoplay=, camera=, encrypted-media=, fullscreen=, geolocation=, payment=, picture-in-picture=, microphone=, web-share=, publickey-credentials-get=, interest-cohort=, gyroscope=, magnetometer=, midi=, accelerometer=, usb=,“ Header Set Content-Security-Policy: „frame-ancestors ’self‘ blob: shizoworld.de *.shizoworld.de t.co twitter.com hypedd.it hypeddit.com facebook.com instagram.com reddit.com; script-src ’self‘ ‚unsafe-inline‘ ‚unsafe-eval‘ data: https: data-cmplz-src *.shizoworld.de shizoworld.de *.cityofdrums.de cityofdrums.de *.wordfence.com *.rankmath.com *.google.com *.google.de *.google-analytics.com *.gstatic.com *.googleapis.com *.doubleclick.net *.googletagmanager.com *.tagassistant.google.com *.spreadshop.net *.myspreadshop.net *.spreadshirt.net *.spreadshop.de *.myspreadshop.de *.spreadshirt.de *.facebook.com *.instagram.com *.reddit.com *.whatsapp.com *.spotify.com *.deezer.com *.youtube.com *.vimeo.com *.soundcloud.com *.beatport.com *.amazon.de *.amazon.com *.apple.com *.digdis.de *.feiyr.com *.cookiedatabase.org *.hypedd.it *.hypeddit.com *.onetrust.com *.twimg.com *.t.co *.twitter.com *.ads-twitter.com *.cloudflare.com *.jquery.com *.pusher.com *.bootstrapcdn.com; style-src ’self‘ ‚unsafe-inline‘ *.spreadshop.net *.myspreadshop.net *.spreadshirt.net *.spreadshop.de *.myspreadshop.de *.spreadshirt.de *.cookiedatabase.org *.hypedd.it *.hypeddit.com *.onetrust.com *.twimg.com *.googletagmanager.com *.tagassistant.google.com *.google.com *.google.de *.twitter.com *.twimg.com; object-src ’none‘; media-src ’self‘ data: shizoworld.de *.shizoworld.de *.w.org; frame-src ’self‘ ‚unsafe-inline‘ ‚unsafe-eval‘ data: https: blob: shizoworld.de *.shizoworld.de; child-src ’self‘ *.shizoworld.de shizoworld.de *.cityofdrums.de cityofdrums.de *.wordfence.com *.rankmath.com *.google.com *.google.de *.google-analytics.com *.gstatic.com *.googleapis.com *.doubleclick.net *.googletagmanager.com *.tagassistant.google.com *.spreadshop.net *.myspreadshop.net *.spreadshirt.net *.spreadshop.de *.myspreadshop.de *.spreadshirt.de *.facebook.com *.instagram.com *.reddit.com *.whatsapp.com *.spotify.com *.deezer.com *.youtube.com *.vimeo.com *.soundcloud.com *.beatport.com *.amazon.de *.amazon.com *.apple.com *.digdis.de *.feiyr.com *.cookiedatabase.org *.hypedd.it *.hypeddit.com *.onetrust.com *.twimg.com *.t.co *.twitter.com *.ads-twitter.com *.cloudflare.com *.jquery.com *.pusher.com *.bootstrapcdn.com; base-uri ’self‘; form-action ’self‘ t.co twitter.com hypedd.it hypeddit.com facebook.com instagram.com reddit.com; worker-src ’self‘ blob:; upgrade-insecure-requests;“

END Security Headers

WordPress-Sicherheit mit HTTP-Security-Header erhöhen! (elbnetz.com)

Das Caching war meine zweite Baustelle. Hier habe ich einige Cache Plugins mit und ohne Minifier ausprobiert, aber nie wirklich Zuwachs an Geschwindigkeit erfahren. Hier kam der Hinweis vom Hoster:

Begin Cache und Compression

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Caching einrichten FileETag MTime Size

ExpiresActive On
ExpiresByType image/jpg „access 1 year“
ExpiresByType image/jpeg „access 1 year“
ExpiresByType image/gif „access 1 year“
ExpiresByType image/png „access 1 year“
ExpiresByType text/css „access 1 month“
ExpiresByType text/html „access 1 month“
ExpiresByType application/pdf „access 1 month“
ExpiresByType text/x-javascript „access 1 month“
ExpiresByType application/x-shockwave-flash „access 1 month“
ExpiresByType image/x-icon „access 1 year“
ExpiresDefault „access 1 month“

End Cache und Compression

WordPress Beine machen per .htaccess – STRATO Blog

Einen weiteren Tipp im Netz fand ich zu Hotlinks:

Hotlinking deaktivieren

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?deinedomain.de [NC]
RewriteRule .(jpg|jpeg|png|gif)$ – [NC,F,L]

Wie man Hotlinking in WordPress verhindert (7 einfache Methoden) (kinsta.com)

Und ebenfalls zum Thema XMLRPC Funktion, die ja quasi nur noch als Altlast im WordPress mitgeführt wird [obwohl ich glaube, dass es schon noch einen Grund hat, weshalb das noch dabei ist]:

XML-RPC deaktivieren

Require all denied

Eine komplette Anleitung über xmlrpc.php in WordPress (Was es ist, Sicherheitsrisiken, Wie man es deaktiviert) (kinsta.com)

Und zu Guter Letzt die Absicherung der WP-Config.php:

protect wpconfig.php

Order deny,allow deny from all

13 nützliche wp-config.php Code-Snippets • Elbnetz ®

Dort ebenfalls beschrieben die WordPress Optionen der wp-config.php die Werkseits auch nicht im Backend erreichbar sind um die Performance etwas zu verbessern:

define(‚WP_MEMORY_LIMIT‘, ‚512M‘);
define(‚WP_POST_REVISIONS‘, false); //Keine Revisionen werden gespeichert
define(‚EMPTY_TRASH_DAYS‘, 30); //Alle 30 Tage wir der Papierkorb geleert
define( ‚WP_EMOICONS‘, false );
define( ‚WP_CACHE‘,true);
define( ‚COMPRESS_CSS‘, true );
define( ‚COMPRESS_SCRIPTS‘, true );
define( ‚ENFORCE_GZIP‘, true );
define(‚FORCE_SSL_LOGIN‘, true); // SSL-Login erzwingen
define(‚FORCE_SSL_ADMIN‘, true); // SSL-Admin erzwingen

13 nützliche wp-config.php Code-Snippets • Elbnetz ®

Achtung der Code wird leider nicht komplett dargestellt – deshalb die Links um sich entsprechend Orientieren zu können 🏸💖

Als Sicherheit Plugin hat sich für mich weiterhin WordFence bewährt. Hier habe ich auch kaum in den Einstellungen getweakt – nur die Logging Einträge etwas heruntergeschraubt. Ninja Forms als Formular Baukasten hat nach meiner Bitte für PHP8.3 Kompatibilität gesorgt. Captcha for Contact Form 7 habe ich einen Fehler gemeldet, bei dem der Prozess die Datenbank nicht aufräumt. Ich habe die Login-Sicherheit jetzt aber mit einer 2FA Lösung realisiert. Der Converter for Media optimiert nun meine Bilder und komprimiert zuverlässig. RankMath Seo sorgt für optimale SEO, auch wenn ich hier wieder komplett durch alle Beiträge bin, um den SELECT PRIMARY TERM auszufüllen. Aber was tut man nicht für gutes SEO! Der 404 Monitor gibt mir auch immer wieder Arbeit, weil ich letztes Jahr schon massiv aufgeräumt habe und Beiträge deren Links nicht mehr funktionieren (Das Internet vergisst nie 🤣) zu löschen. Ebenfalls die Bilder und Lokal SEO finde ich sehr nützlich. Was ich aber jetzt deaktiviert habe, ist der Rollenmanager und dieses KI-Ding – nachdem ich da die Credits eh nicht mehr nutzen kann und ich keinen Mehrwert festgestellt habe, fahre ich lieber nach dem Weniger-ist-Mehr-Prinzip! Zumindest bescheinigt mir die interne SEO Analyse gute Arbeit!

WordPress für 2024 Fit machen | WordPress 1

Was waren also nun die größten Änderungen:

Es gibt vom WordPress Team ein Performance Lab mit einigen Unter-Plugins, welches sich für die Performance Optimierung kümmert. Hier gibt es zum Beispiel einige Module beim WordPress Check und auch Server Timing Buffers. Ebenfalls wird an den Übersetzungen gefeilt und es gibt ein Auto-Size bei Bildern. Neu sind auch die Speculation Rules, die dem Caching helfen.

Das Plugin Stop User Enumeration soll mir ebenfalls bei dem Nummern-Problem bei dem User helfen.

Größte Hilfe bei den inzwischen wichtigen EU Texten für die Website war Complianz | GDPR/CCPA Cookie Consent und Complianz – Allgemeine Geschäftsbedingungen. Nicht ganz fehlerfrei ist die Version 7.0.2. bei mir hängt sich der Assistent derzeit bei 33% auf – Techniker ist informiert! Aber allein durch diese wichtigen Dokumente haben eRecht24 und andere Internet Test Sites nix mehr zu meckern und ich sorge für weitere Transparenz – schließlich will ich meine Platten ja an glückliche Kunden verkaufen! Und weil ich nicht weis wie das jetzt weiter mit dem ganzen Cookie und Datenschutz Gedöns zwischen EU und USA weiter geht, habe ich mir das Burst Statistics noch installiert um die Besucher datenschutzkonform lokal zu erfassen.

Wichtigster Change war aber das Cache Plugin – hier setze ich nun auf WP Speed of Light welches mein Theme Dev getestet hatte. Da PageSpeed Insights ja DAS Tool ist, welches auch die Google Console mit Daten füttert, muss man genau da ja schließlich performen. Und neben Datenbank Voodoo, mit einem Change auf Open Source MariaDB, Datenbank aufräumen, robots.txt und ai.txt strukturieren und vielen kleinen nervigen Handgriffen, bringt es meine Site nun endlich Mobil auf 86-96 Punkte und „volle“ 99 Punkte im Desktop ✨✨✨ Manchmal zumindest ^^