Guides & Tools

WunderPaint

Everything about WP-CLI

Some jobs are an afternoon in the admin and one line on the command line. These articles give you the line, and explain what it does before you run it on something you care about.

Post – Category

Troubleshooting

Error Establishing a Database Connection: What WordPress Is Actually Telling You

The message means PHP ran, wp-config.php was read, and the connection to MySQL failed. Nothing more. Here is how to tell a wrong password from a downed server from a host that ran out of connections, and what to do about each.

WordPress Images

Clean Up WordPress Media Library Without Breaking Pages

An attachment is a row in wp_posts; its files sit somewhere else, and deleting one does not delete the other. What to measure before you start, why "unused" is so hard to prove, and the order of operations that keeps the site up.

Developer Tools

Cron Expression Generator: The Five Fields and the OR Rule

The five cron fields, the four special characters, and the rule that catches everyone: day of month and day of week are combined with OR, not AND. Plus why WP-Cron misses schedules, and the two lines that put WordPress on a real timer.

WordPress Images

WordPress Media Library Folders: Why There Are None, and What Actually Works

WordPress stores every upload as a post, not as a file in a folder, which is why the media library has no directories to organise. Here is what the uploads folder really is, why moving files by hand breaks images everywhere, and how taxonomy-based folders solve it without touching the disk.

Developer Tools

Hashes and Encoding: Getting Back Into Your Own WordPress

The reset mail never arrives and you are locked out of a site you own. The way back in runs through one column: user_pass in wp_users. Here is what is actually stored there, checked line by line against wp-includes/pluggable.php, plus a browser-only tool that builds both the bare MD5 and the modern $wp bcrypt value.

WordPress Images

WordPress Replace Image: Swap the File, Keep Every Link

WordPress has no replace function, because an attachment is a path plus a cached description of whatever sits at that path. This is why a re-upload becomes hero-1.jpg, what an SFTP overwrite really leaves behind, and the order of operations that swaps a file without breaking twenty references.

WordPress Images

WordPress Duplicate Images: How to Find and Delete Them Safely

Uploading the same file twice gives you a numbered copy, not a match, because core only tests the file name against one directory. Here is how the duplicates get made, three detection passes ranked by what they actually prove, and a deletion order that will not break a live page.

Troubleshooting

Serialized Data Repair and Search Replace: The Bytes That Break a Migration

One UPDATE with REPLACE() over wp_options is all it takes to kill a WordPress site after a migration, without printing a single error. The reason is a number baked into PHP's serialization format, and the fix is counting bytes.

Speed & Performance

Bulk Resize Images in WordPress Without Breaking the Library

Regenerating thumbnails and resizing the original are different jobs, and only one of them is irreversible. What the scaled pair actually costs you, how to measure it with read only commands, what a safe bulk resize has to do step by step, and why most sites should fix the upload threshold instead.

Troubleshooting

WordPress Missed Schedule: Why WP-Cron Is Not a Cron Job

WP-Cron has no timer and no background process. It is a list of due tasks that gets checked only when somebody loads a page, which explains missed post schedules, stalled backups, and every other scheduled task that silently stops.
Loading more Articles