Topic
WordPress & PHP in Production
The most painful WordPress bugs rarely show up in the error log: a filter that runs but renders nothing, one setting stored under two option keys, a PHP 8 fatal masquerading as out-of-memory. These are real incidents from client sites, from a functions.php edit that locked out wp-admin to a second WP_Query clobbering a reserved global. Read this if you maintain custom themes or plugins and something in production 'makes no sense'.
61 articles
Start here
Adding a require_once to a Live functions.php Locked Me Out of wp-admin, and the Recovery Tool With It
-
A Form Guard That Only Knew `bot` or `not`: A Real Person Told to Wait for an Email That Was Never Sent
September 19, 2026 -
Searching an Author Name Returns 1 Result While Four New Posts Stay Invisible? The Theme Had No `search.php`
September 18, 2026 -
33 Rank Math Meta Descriptions Had to Come from a Client CSV: Set Them Through the Internal `rankmath/v1/updateMeta` REST Endpoint, Not the Per-Page Editor
September 14, 2026 -
`add_meta_box()` Box Never Shows Up in wp-admin? The String 'side' Landed in the `$screen` Argument
September 7, 2026 -
`php -l` Says Unmatched '}' on Line 466 but the Braces Balance: A `?>` Inside a `//` Comment
September 2, 2026 -
Import Succeeded, Counts Matched, Every Image Broken: The Parser Stored `MEDIA.cover` as Text
August 29, 2026 -
The Category Filter That Never Filtered: I Mapped `?category=` to `s=`, and `s=` Is an AND-Search
August 26, 2026 -
Headers Say `spf=pass` but Mail Still Lands in Spam? DMARC Is the One Failing, Because SPF Aligns With the Server's Domain
August 26, 2026 -
Phantom `<video>` Element Shows Up in 2 of 10 Requests Even Though the File Was Deleted Hours Ago? That's PHP's Stat Cache, Not OPcache
August 23, 2026 -
Every Number Says the Database Rolled Back Two Months? The Apache Vhost Points at a Retired Install That Carries Its Own Database
August 20, 2026 -
Whole Site 500s While `php -l` Is Clean and md5 Matches? `umask 077` in the Deploy Shell Shipped Mode 600 Files
August 20, 2026 -
Every URL Returns HTTP 200 With a Zero-Byte Body and Not One PHP Error? `index.php` Sets `$wp_did_header` Before `wp-blog-header.php` Gets to Run
August 19, 2026 -
FR/EN Bilingual Without WPML: Three Client-Side i18n Mechanisms in One WordPress Theme
August 18, 2026 -
New Listings Never Reach the Moderation Queue or Search? `_listing_status` Is Never Written on Create
August 16, 2026 -
Pinned Section Renders as an Empty Box? `<picture>` Is `display:inline` and `object-fit` on `<source>` Never Runs
August 12, 2026 -
A Paid Booking Stuck at `approved`? `mark_booking_paid()` Only Knew One Starting Status
August 11, 2026 -
`Cannot redeclare theme_geo_label()`: php -l Said Clean, Uploading `inc/` Took the Whole Site Down
August 9, 2026 -
`body_class()` Adds `search-results` to `<body>`, and My Whole Search Page Got Squished
August 6, 2026 -
Raw `<?php` Tags Printing on the Page? FSE Template Parts Never Execute PHP
August 6, 2026 -
The Color Belongs to `post_content`, Not `theme.json`: Editing `content.raw` Over REST and Patching the Seeder
August 4, 2026 -
`?error=` Vanishes From `$_GET`: Never Name a Query Param After a WordPress Reserved Var
August 4, 2026 -
1,343 Pages Scraped, 1,343 Identical Bodies? The `article .entry-content` Cascade Grabbed a Sidebar Widget
August 3, 2026 -
`post_link` Filter Is Correct but Some Posts Stay at Root? Permalink Manager Lite Overrides at Priority 99
July 30, 2026 -
New Block Theme Patterns Not Showing Up? WordPress Caches the Pattern List in a `site-transient` for a Week
July 26, 2026 -
WordPress Staging on a Subpath 301-Redirects to Production? Two Rewrite Blocks Stacked in `.htaccess`
July 26, 2026 -
Abandoned Checkout Locks Booking Dates Forever? `booking_payment_failed` Fires With Zero Listeners
July 23, 2026 -
Property Edit Page 500s Only During PHP Shutdown? `esc_textarea()` Got an Array `house_rules`, Not a String
July 23, 2026 -
`get_page_by_path('add-property')` Returns `null` for a Nested Child Page? Production Ballooned to 137 Duplicate Pages
July 23, 2026 -
A Dead Email Domain Passes as a WordPress User? `is_email()` Only Checks Syntax, Not Deliverability
July 23, 2026 -
A 1px Line Cuts Across the Hero, Only on WordPress Staging? The WP Staging Banner Shifts a Decorative `::before` Into the Viewport
July 23, 2026 -
Owner Listings Always Publish With Zero Photos? Upload Only Builds a Preview, the Publish Handler Skips `gallery`
July 23, 2026 -
Checkout Always Redirects to the Homepage: `empty( $property['id'] )` Is Always `true` Because `get_property_data()` Has No `id` Key
July 22, 2026 -
One Availability Toggle Wipes Every Block? A JSON String Meta Read as a PHP Array
July 22, 2026 -
"Text First, Then the Animation, Then the Text Again": `gsap.set` Waiting for the Preloader
July 18, 2026 -
`admin_init` Lockdown Silently Kills EVERY Front-End Form (0 Members Ever Registered)
July 17, 2026 -
A Homemade Login Throttle Locks Out Real Users: Office IP Collateral From a Bot Spray
July 17, 2026 -
`wp_mail` Dead on a Raw EC2: 'Could not instantiate mail function' and the Passwordless Google Workspace SMTP Relay
July 17, 2026 -
Settings Field Set to `0` Snaps Back to Default? `array_filter()` Drops Your Legit Zero
July 16, 2026 -
`wp_mail()` Silently Fails and Zero Emails Arrive? Your Managed Host Disabled PHP `mail()`
July 16, 2026 -
Built a Custom Gutenberg Block but It Never Shows Up in the Inserter? The Site Runs Classic Editor
July 8, 2026 -
Category Pages Showed `00 stories` Despite Published Posts? A Leftover Seeder `meta_query` Was Excluding All Real Content
July 8, 2026 -
Saving a Post Returns a 502? Synchronous `media_handle_sideload()` Blows Past the Edge Proxy Timeout
July 8, 2026 -
WordPress Importer Dies Mid-Run With Cloudflare `524 A Timeout Occurred`? The 100-Second Cap Is Real, Rebuild It as a Batched State Machine
July 7, 2026 -
The EUR/USD Currency Switch Did Nothing? The Prices Were Stored as Pre-Formatted Strings Like `'€450'`
July 7, 2026 -
Cleanup Script Dies With `Call to undefined function` on `require 'wp-load.php'`? Wipe WordPress via Raw `mysqli` Instead
July 7, 2026 -
`xmlrpc.php` Still Returns 200 After `add_filter('xmlrpc_enabled', '__return_false')`? That Filter Does Not Kill XML-RPC
July 7, 2026 -
A Dimmed Row Is Not Authorization: An Owned Profile Was Still Claimable Through a Direct URL
July 3, 2026 -
Naming a 2nd WP_Query `$more`/`$page` Collides With a WordPress Global, a Fatal That Masquerades as Out-of-Memory
June 30, 2026 -
Your PHP Filter Runs but the Page Is Empty? A Theme Missing `page.php`/`search.php` Silently Falls to `index.php`
June 29, 2026 -
A Custom Post Type at the Root URL (`/title/`) Falls Through to the Homepage, Fix It With Per-Slug Rewrite Rules
June 28, 2026 -
`$wpdb->prepare()` With an Array Param Returns Empty on WordPress 7.0
June 26, 2026 -
The `get_theme_mod($id, $fallback)` Trap: The Fallback Arg Silently Overrides Your Registered Default
June 25, 2026 -
PHP 8 Fatal: 'Attempt to read property on array' When a Getter Returns an Array
June 25, 2026 -
Reusing `$x` Silently Wiped the Content When Porting React to PHP
June 25, 2026 -
Smart Quotes (“ ”) Sneaking Into PHP Took Down the Site: A Baffling Parse Error
June 25, 2026 -
Class 'WP_List_Table' not found: How One Always-Loaded File 500s Your Entire Frontend
June 25, 2026 -
Two add_rewrite_rule Calls With the Same Regex Don't Chain, the Second Overwrites the First
June 22, 2026 -
strtoupper Turned a WordPress Category Chip Into 'BANKING & NEOBANKS'
June 22, 2026 -
PHP 8 Bug: 'floatval' as a sanitize_callback Causes a Fatal Error in WordPress
June 18, 2026 -
update_post_meta Silently Strips Your JSON Slashes (and Hides the Bug for Days)
June 18, 2026