On December 8, 2025 at 14:48


Add logging to my kitchen-sink WordPress plugin with handlers for error_log() and Query Monitor.
Nice to have info/debug level data while developing and warnings+ on PROD.
How are you handling this in your plugins?


Add logging to my kitchen-sink WordPress plugin with handlers for error_log() and Query Monitor.
Nice to have info/debug level data while developing and warnings+ on PROD.
How are you handling this in your plugins?
After sunsetting a VPS that was used for backup of other VPSes, I decided to have #restic send everything to a restic-rest instance (as docker container) on my #homelab NAS over #wireguard.
Amazing how restic can backup to so many destinations (s3, sftp, http) over so many transports.

Did you know that HTTP3 is already supported by 92% of browsers and can offer 10-20% performance improvements (mostly to LCP) especially for mobile users?
Nginx added support for HTTP/3 two years ago in version 1.25.0 so it is available in most recent Linux distributions.
Just make sure to allow UDP connections on port 443 in your server firewall to avoid hours of debugging like I did π

Did you know there is a way to check the historic web vitals for your sites from actual user data?
Try it out here: https://cruxvis.withgoogle.com/


Has anyone had luck registering for AliExpress API access?
Getting auto-rejected and not sure what to try next.
Check out my updated /uses list with the latest gear and software changes from 2025: https://kaspars.net/uses

The #FAIR plugin for WP doesnβt like iOS Safari. Probably an outdated regex on user agent?
Amazing how little PHP can do so much! https://serverless.industries/2025/07/06/antiframework.en.html
I also do 99% of prototyping in PHP.
Fun idea from @christian

Turns out HTTP Host headers can have a trailing dot (totally valid too) and nginx will happily forward it to php-fpm making $_SERVER['HTTP_HOST'] have a trailing dot which then fails all WP multisite domain lookups…
First time seeing this on a fresh nginx + php 8.4 setup.

How do you profile PHPStan runs for performance issues?
It appears to be spawning a child process even if maximumNumberOfProcesses is set 1 which makes the core logic invisible to XDebug profiler.


Trying out the new VS Code fork from Google.
Requires Google login to actually use it… not sure I like this direction.




Electric Penny Bicycle https://kaspars.net/blog/electric-penny

Feels like half the web is down now…
Cloudflare and other MITM proxies with TLS termination have access to your WP usernames and passwords, and every WooCommerce transaction (including customer billing and address data).

Version 3.0.0 of the Minit plugin for WordPress now defers the script bundle by default and uses this trick to support scripts with "after" logic (which require the parent to be loaded).
Learn more here: https://github.com/kasparsd/minit
Responded to @kasparsd:
OK, found it. It is coming from this plugin https://wordpress.org/plugins/replace-image/

Has anyone seen WP add ?_t=… to image URLs? Couldn't find anything in the codebase where this is happening.
This is causing WP to fail at generating the srcsets.
Improve the local development experience for your team and point *.local.yourproject.com to 127.0.0.1 using the public DNS.
Here is how to configure it: https://kaspars.net/blog/public-dns-local-development-url
Everyone on Twitter now…
The whole re-auth flow is completely broken. I'm using the correct key and it still goes into this infinite loop.
Has anyone created a /metrics REST API endpoint for WordPress that reports data about the WP instance — object cache reads/writes/memory (from memcache/redis/apcu), php-fpm stats, system load, disk space, etc.
Ideally, with Prometheus and OpenTelemetry output formats.