Permalink Manager for WooCommerce by Onlinefotka
Permalink Manager for WooCommerce by Onlinefotka gives you complete control over how your WooCommerce product and category URLs are structured — without editing theme files or touching WordPress core.
By default, WooCommerce forces ugly base slugs into every URL: /product/your-product-name/ and /product-category/electronics/. These slugs waste characters, look unprofessional and hurt SEO by making URLs longer than they need to be. This plugin solves all of that.
Why clean URLs matter for SEO
Search engines prefer short, descriptive URLs. Every extra word in a URL path that adds no meaning — like /product/ or /product-category/ — is a word that dilutes the value of your actual keywords. Removing these base slugs typically results in:
- Shorter, more shareable URLs
- Better click-through rates from search results
- Cleaner internal linking structure
- Fewer 404 errors when products are linked without the base slug
Per-product custom URL
Need one specific product to have a completely different URL than your global setting? Open any product, scroll to the General tab of Product data, and fill in the Vlastná URL (OPM) field with any path you like (single segment or nested, e.g. akcia/super-zlava). This overrides the global URL mode for that one product only — leave it empty and the product keeps using whatever mode you have selected for the whole shop. Changing or clearing a custom URL automatically creates a 301 redirect from the old address.
Product URL modes
Choose exactly how your product URLs should look:
- Default — keep the WooCommerce default
/product/your-product/(no changes) - No base slug — remove
/product/prefix →/your-product/(recommended) - Category + product — prepend primary category →
/electronics/your-product/ - Full category hierarchy — include all parent categories →
/tech/electronics/your-product/
Category URL modes
Choose exactly how your category URLs should look:
- Default — keep the WooCommerce default
/product-category/electronics/(no changes) - No base slug — remove
/product-category/prefix →/electronics/(recommended) - Full hierarchy — include parent categories without base →
/tech/electronics/ - Custom base — replace
/product-category/with your own prefix, e.g./shop/electronics/
SEO and redirect features
Changing URL structure on an existing shop can kill your rankings if not handled correctly. This plugin takes care of everything automatically:
- Automatic 301 redirects — all old URLs are permanently redirected to the new canonical URL. Visitors and crawlers are never left on a dead link.
- Trash redirect or 410 — when you move a product to trash, a notice on the Products list lets you redirect the old URL or mark it as permanently gone (HTTP 410) so search engines drop it from the index instead of retrying a dead link forever. Works without needing Yoast SEO Premium.
- Canonical meta tags — fixes the
rel=canonicaltag in the<head>to point to the new URL structure, preventing duplicate content penalties. - Breadcrumb fix for Yoast SEO — updates Yoast breadcrumb trails to match the new URL structure.
- Breadcrumb fix for RankMath — updates RankMath breadcrumb trails to match the new URL structure.
- Primary category support — reads the primary category set in Yoast SEO or RankMath and uses it for URL generation and breadcrumb paths.
- Product tag URL cleanup — removes the
/product-tag/base slug from tag archive URLs. - Slug conflict detection — warns you when a product slug collides with an existing page, post or custom post type.
Diagnostic tools
A dedicated Diagnostics tab inside the plugin settings lets you:
- See a live plugin status table — shows active URL mode, cache status, detected plugins (Yoast, RankMath, WPML), PHP version, WP version and WooCommerce version.
- Use the built-in URL tester — enter any URL path and instantly see how the plugin resolves it, which rewrite rule matched and whether a redirect was triggered.
- View the full list of active rewrite rules added by the plugin — useful for debugging conflicts with other plugins.
- Flush rewrite rules and rebuild the slug cache with a single click.
Performance
- Product slugs are cached in a WordPress transient (configurable TTL, default 1 hour) to avoid repeated database queries on every request.
- Rewrite rules are registered only once on
initand flushed only when settings change — no performance overhead on the front end. - No external HTTP requests, no tracking, no telemetry.
Developer notes
- Clean PHP 7.4+ code with custom PSR-4 autoloader — no Composer required
- Namespace
WCUM\— no global function pollution - All settings stored in a single WordPress option as a serialized array
- Activation hook flushes rewrite rules; deactivation hook restores WooCommerce defaults; uninstall hook removes all plugin data
- Compatible with WooCommerce High-Performance Order Storage (HPOS)
- Compatible with WPML and Polylang (basic multilingual support via standard WP rewrite API)
