Got an urgent call a while back from a client running a massive fashion store. They were trying to do a bulk product update—we’re talking thousands of products—via CSV, and everything was breaking. Specifically, their brand taxonomy was a total mess. They had parent brands like ‘Global Kicks’ and child brands like ‘Global Kicks > Running Shoes’, but the WooCommerce CSV import tool was ignoring the hierarchy, creating a flat, useless list of brands. Absolute nightmare for filtering.
My first thought, honestly? User error. 99% of the time, it’s a stray comma or a quote that’s not escaped properly in the CSV. So I spent a good hour sanitizing their file, checking encodings, and even wrote a quick pre-processor script to format the brand column. It felt like a band-aid, not a fix. The data was right, the format was right… but the import was still wrong. It was one of those problems that makes you question your own sanity.
The Real Problem with Hierarchical CSV Imports
So, I started digging into the importer logic in WooCommerce core. And that was it. It turns out, the logic that correctly parses hierarchical taxonomies for product categories wasn’t being fully applied to other taxonomies, like a custom ‘brand’ taxonomy. The importer just wasn’t built to understand the ‘Parent > Child’ syntax for anything but categories. Trust me on this, it’s a subtle bug that can cause massive headaches. You follow the documentation perfectly, and the machine just says “nope.”
Here’s the kicker: we were about to write a custom patch to fix the importer logic when the official update dropped. As the WooCommerce Developer Blog noted in their post on the new 10.3.5 dot release, this exact issue has been fixed. The fix, PR #61873, specifically harmonizes the brand import logic with the category logic. It’s a small change in the grand scheme of things, but it’s a critical one for any large store using custom taxonomies.
<!-- This is how your 'Brand' column should be formatted.
It finally works as expected. -->
"SKU","Name","Brand"
"SHOE-01","Running Pro","Global Kicks > Running"
"SHOE-02","Casual Walker","Global Kicks > Lifestyle"
"TEE-01","V-Neck Tee","Basic Threads"
A Few Other Quietly Important Fixes
- Block Theme Asset Loading: Devs using block themes can now properly disable legacy Woo styles and scripts again. This was a real pain point for performance optimization, as Woo was force-loading assets you didn’t need. Finally, we have control back.
- WordPress 6.9 Compatibility: The Add to Cart button now correctly inherits styles from the core WordPress Button block. A small fix, but it prevents your buttons from looking out of place after the next major WordPress update.
- Plugin Deactivation Guard: A simple but smart change prevents you from accidentally deactivating the *entire* WooCommerce plugin when you’re just trying to disable a bundled payment gateway. Saved a few heart attacks there.
So What’s the Real Lesson Here?
Dot releases are never glamorous. They don’t have shiny new features. But this is where the platform gets stronger. These small, targeted fixes for things like the WooCommerce hierarchical CSV import are what separate a stable, reliable e-commerce system from one that constantly has you chasing weird bugs. It pays to read the changelogs. They’re not just noise; they’re a map of problems already solved for you.
Look, this stuff gets complicated fast. If you’re tired of debugging someone else’s mess and just want your site to work, drop my team a line. We’ve probably seen it before.
Ever been stuck on an import that should have worked but just… didn’t? I want to hear about it.
Leave a Reply