Skip to content
System nominalUTC --:--:--Articles 041

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 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 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 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 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 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 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 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 15 DEC 2025 · 8M