Martin Kiel
@mkiel · WordPress internals · 08 ARTICLES
Writes about the load-bearing parts of WordPress: the options table, hook ordering, WP_Query behaviour and the database work that decides whether a plugin scales or falls over.
WP-Cron Fires When a Visitor Arrives, Not When the Clock Says So
WP-Cron is a request-triggered scheduler. What wp-cron.php does on a quiet site versus a busy one, and where the pattern stops being enough.
WP
Martin Kiel
29 SEP 2026 · 8M
The wp_options Autoload Flag, and the Rows That Tax Every Request
Autoloaded options are read on every uncached request, not only on admin screens. Here is the query that finds the expensive rows and what to do with each kind.
PERF
Martin Kiel
18 SEP 2026 · 7M
Why One update_post_meta() Call Empties Your Query Cache
WP_Query caches its results, then a single metadata write clears the whole group. How to read that behaviour with SAVEQUERIES and what to turn off.
WP
Martin Kiel
24 AUG 2026 · 7M
When wp_postmeta Stops Being the Right Place for Plugin Data
Postmeta is correct for sparse per-object keys and wrong for range queries and aggregation. How to tell which one you have before the table outgrows the store.
WP
Martin Kiel
16 JUL 2026 · 8M
Hook Priority Is a Coordination Mechanism, Not a Tuning Knob
Priority decides who runs when, and two plugins at 10 are arguing without knowing it. How WP_Hook orders callbacks and how to read the argument from your own site.
WP
Martin Kiel
20 MAY 2026 · 9M
Build a WordPress Benchmark You Can Trust Before You Change Anything
A benchmark you cannot repeat is not evidence. Fix the dataset, fix the cache state, and report median and p95 server time instead of how the page felt.
PERF
Martin Kiel
15 APR 2026 · 7M
Multisite Option Storage, and What Multiplies by the Number of Sites
Option storage splits across three tables on a network. Where each write lands, what a one-site audit misses, and why custom tables are a one-way door.
WP
Martin Kiel
12 MAR 2026 · 8M
Debugging a Live Store When You Cannot Attach a Debugger
WP_DEBUG leaks paths, SAVEQUERIES eats memory, and a step debugger blocks the request. How to find the cause with logs and targeted instrumentation instead.
TOOL
Martin Kiel
15 DEC 2025 · 8M