Blog
Actionable tips and updates to help you ship plugins, themes, and client sites faster
7 min readHow to delete a WordPress site, and the eight things that survive it
Deleting the files and dropping the database takes two minutes. The database user, the server cron job, the DNS record and five other things are still there afterwards, and every guide on the first page stops before them.
7 min readHow to restore WordPress from a backup, and the five things that break when you do
Putting the files back is the easy half. The database carries the old site's URL, table prefix, salts and cron schedule, and each one fails in a way that does not look like a restore problem.
5 min readWordPress thumbnail sizes: the six copies core makes, and what they cost you
Every guide says WordPress makes three thumbnail sizes. On a clean WordPress 7.1.3 install it registers six, plus a scaled copy of the original, and one 8 MB photo landed as eight files totalling 11.5 MB.
7 min readWordPress nonces: how long they really last, and why they fail early
A WordPress nonce is a 10-character hash of a time window, an action, a user ID and a session token. That last part is why most nonce bugs have nothing to do with the 24-hour expiry everyone talks about.
8 min readWordPress robots.txt: the file that is not a file, and why ticking "Discourage search engines" no longer touches it
WordPress serves robots.txt from PHP, not from disk, so there is nothing in your root directory to edit. And since WordPress 5.3, discouraging search engines stopped adding Disallow: / to it, which is the one thing most staging guides still tell you it does.
8 min readWordPress email not sending: find out which layer failed before you install anything
wp_mail() returns true even when nothing was delivered. Here is how to tell whether your mail died in a plugin, in PHPMailer, at the transport, or after the receiving server accepted it.
8 min readThe WordPress theme editor: what the save button actually does
WordPress writes your theme file to disk first and checks it for fatal errors second, and it only runs that check on PHP files in the active theme. Everything else saves unchecked.
7 min readWordPress "Missed schedule": what the label means and how to tell which failure you have
"Missed schedule" is a red label in the Posts list, not a post status. There are two different failures behind it, they need different fixes, and one command tells them apart.
6 min readWordPress database repair: what repair.php actually does, and what it cannot touch
Setting WP_ALLOW_REPAIR opens a page with no login check that runs REPAIR TABLE on core tables only. On InnoDB, which is almost certainly what you are running, that statement does nothing.