Whatâs the best way to make WordPress accept non-unique sub-category slugs?
By default, WordPress ensures that every âslugâ portion of permalink URLs is unique, and is very savvy about using this to ensure you never see a 404 from omitting a portion of the URL. This means if my permalink structure isâ¦
http://site-root.com/category-name/sub-category-name/post-name/post-id
Thenâ¦.
- http://site-root.com/category-name/sub-category-name/post-name/post-id
- http://site-root.com/category-name/sub-category-name/post-name
- http://site-root.com/category-name/sub-category-name/post-id
- http://site-root.com/sub-category-name/post-name/post-id
will all take me to the same post.
But if that kind of fail-safe redirection is less important to someone than being able to have non-unique slugs (and nicely structured directories), Iâm SOL.
Letâs say Iâm writing a restaurant review guide in major cities. I want my top-level categories to be city names, and the types of restaurants to be the sub-categories. So I create âBostonâ, âNew Yorkâ, and âSeattleâ, then I add the sub-categories âChinese Foodâ, âItalian Eateriesâ, and âLuxury Diningâ to Boston. But when I try to add the same sub-categories to New York, even when I specify the URL slugs, WordPress starts forcing slugs like âhttp://[site-root].com/New-York/Chinese-Food-New-York/â â unnecessary repetition, and lengthening my links. This gets even worse if I want to have sub-sub-categories.
I havenât yet been able to find a way to force WordPress to accept non-unique slugs. How would you recommend I accomplish this?
I’d look into using custom post types for the repetitive parts of your permalinks. Cities can be categories, and the restaurant types can be post types. It’s the perfect use for post types, and it helps solve the problem.
Unfortunately I can only see it helping with one sub-level. If you need sub-sub-categories you’ll have to find another WordPress feature with a URL presence that you can “bend” to fit your purpose.
The short version is no, you can’t do that. But similar to what Voyagerfan said, you may want to look into using a custom post type and and custom taxonomy. That way they aren’t parent / child relationships, rather, separate types that can be sorted / queried on their own.
I’m struggling with complex category restrictions too. In your case, you might want to check out Pods CMS. It’s a pretty sweet plugin that seems to have possibly stalled (release of 2.0 is a year overdue), but it gives you way more flexibility with relational posts (“pods”) and url structure. The part that would be useful to you would be using wildcards for urls, so you can tell a certain “pod” to show up if the url matches something like boston/restaurants/* and another for boston/* and another for /* etc.
I guess you probably don’t need a solution any more, but might be helpful to others. Or does anyone else know of plugins that give you that url wildcard functionality using WP’s native custom post-types?