Direct answer
To rename WooCommerce's native Description, Additional information, and Reviews tabs safely, filter the existing tab array through woocommerce_product_tabs, change only the title value for a native key that is already present, and return every callback, content value, priority, visibility decision, and unknown tab unchanged.
Do not copy a product-page template, hide labels with CSS, patch the page with JavaScript, or create a missing tab just because a rename field has a value.
StoreFixKit's Rename Product Tabs for WooCommerce follows that boundary. Free supplies three optional store-wide names. Pro adds bounded category and individual-product names while the complete Free result remains local and independent of billing.
A tab has more than a title
The tab array used by a classic WooCommerce product page can include several responsibilities:
- the tab key;
- its visible title;
- its callback;
- its priority and resulting order;
- the content printed by the callback;
- the decision that the tab should exist for this product.
A rename plugin should own only the visible title.
WooCommerce exposes the documented woocommerce_product_tabs filter after it has assembled the available tabs. That means a focused plugin does not need to recreate Description content, inspect product attributes to build Additional information, count reviews, or decide whether a tab should be visible. It receives the existing array and can make one narrow transformation.
Why a small wording task becomes risky
Public support threads show the same simple request arriving through several failure modes. Merchants ask how to rename the Additional information tab, report that a change made through woocommerce_product_tabs did not behave as expected, or find that extra tab titles are not shown.
These reports do not prove one universal WooCommerce defect. They expose an ownership question: which component supplied the tab, and which component printed the final interface?
A classic WooCommerce template may apply the native PHP filter. A block, theme, builder, quick-view panel, accordion extension, or product-tab suite may render a different component. A safe rename plugin changes the documented surface it owns and remains silent elsewhere.
Preserve missing tabs
WooCommerce can legitimately omit a native tab:
- Additional information may be absent when there are no visible attributes or dimensions to show.
- Reviews may be absent when reviews are disabled.
- Description may be absent when the product has no content or another component controls the surface.
If the existing array has no matching key, a rename helper should do nothing. Creating the key would also require choosing content, callback, visibility, and order. That is tab-builder behavior, not renaming.
The safe rule is simple:
- confirm the incoming value is an array;
- confirm the feature is enabled;
- accept only three known native keys;
- limit each saved label to bounded plain text;
- replace
titleonly when the key and title already exist; - otherwise return the incoming array unchanged.
Do not use CSS to replace words
CSS can hide visible text and draw pseudo-content, but it does not reliably replace the accessible name. It can also affect tabs from another plugin that happen to reuse the same class. JavaScript replacement can flash the old words, run after interaction handlers initialize, or fail when a theme changes markup.
Copying a WooCommerce template for three labels creates a different maintenance problem: the override owns the entire copied file and must be reviewed when WooCommerce changes the template.
For this job, the native filter gives a smaller failure surface than all three alternatives.
Use bounded labels
Product-tab names are navigation labels, not content panels. Plain text up to 60 characters covers ordinary merchant wording such as:
- Product details
- Specifications
- Customer reviews
- Materials and care
- More information
HTML, icons, shortcodes, dynamic tokens, product-field interpolation, and translation formulas turn a three-field helper into a rendering engine. They also expand sanitization, escaping, accessibility, caching, and compatibility responsibilities.
Empty fields should mean “keep the incoming WooCommerce title,” not “show a blank tab.”
Test behavior, not only the screenshot
Use a small matrix before launch:
| Product case | Expected result |
|---|---|
| Product with description, attributes, and reviews | Configured native titles change |
| Product with no visible attributes | No Additional information tab is created |
| Reviews disabled | No Reviews tab is created |
| One empty saved field | That incoming native title remains unchanged |
| Third-party product tab | Key, title, callback, content, priority, and position remain unchanged |
| Feature disabled or plugin deactivated | WooCommerce's original array returns |
Open every visible tab and compare its content before and after. Then check product title, description, attributes, reviews, price, stock, quantity, Add to cart, cart, checkout, and a disposable order. A title-only plugin should not change any of them.
Classic templates, blocks, and builders have different owners
The documented PHP filter is a precise contract, not a promise to control every tab-like interface.
A product block or builder may:
- call the native filter and work automatically;
- build its own tab array;
- fetch a Store API or REST representation;
- replace tabs with an accordion;
- print markup after PHP rendering;
- disable a native tab before StoreFixKit receives it.
Do not force compatibility by querying CSS selectors across the page. Record which surface is responsible, then decide whether that surface deserves its own supported adapter and test matrix.
Make Free and Pro precedence easy to explain
Free solves the common job with store-wide names. Pro can add bounded placement without becoming a condition builder:
- an individual product's non-empty name wins;
- a matching selected category's non-empty name comes next;
- the Free store-wide name is the fallback;
- WooCommerce's incoming title is the final fallback.
An individual or category field that is empty falls through. The rule never creates a tab, moves a tab, or modifies content. Support can answer “why did these words appear?” by checking four layers in a fixed order.
Category rules should not rewrite products
A category label can be resolved from the current product's category IDs at render time. It does not require a catalog scan, bulk product update, custom table, scheduled synchronization, or cache purge.
Bounding the selection to 50 categories keeps the admin workflow understandable and limits accidental scope. Individual product values belong in one owned metadata key and are removed only when Pro itself is uninstalled.
Resource and failure boundary
Free receives the tab array that WooCommerce already built. It needs one small option read and no query loop. Pro may read the current product's owned metadata and current category IDs.
It needs no:
- frontend CSS or JavaScript;
- product or review write on a public request;
- custom database table;
- cron or Action Scheduler job;
- catalog scan;
- customer cookie;
- telemetry;
- StoreFixKit request from the storefront.
Missing WooCommerce, malformed settings, an absent native key, a builder that bypasses the filter, inactive Pro, an expired license, or an unavailable license service preserves the previous result. Free remains local.
The Rename Product Tabs documentation includes real screenshots, exact setup, compatibility limits, troubleshooting, rollback, uninstall ownership, and support evidence.
Beginner launch checklist
Record the baseline
Choose one product with all three native tabs, one without attributes, and one with reviews disabled. Record tab names, order, content, and third-party tabs.
Save only the words that need changing
Leave every other field empty. Avoid long headings that wrap badly on mobile.
Test the actual theme surface
Open desktop and mobile product pages, quick view, and any builder or block template in use. A result on one surface does not prove output ownership on another.
Test the off path
Disable the setting, clear all fields, deactivate Free, and temporarily deactivate Pro. WooCommerce's prior titles and full behavior should return.
Test rollback
Move from 0.1.3 to the known-good 0.1.2 package and back. Verify saved labels remain readable and no product, attribute, review, cart, or order changes.
Security and support evidence
Only a user allowed to manage WooCommerce should save global or category settings. Product fields require permission to edit that product. Every write needs a nonce and capability check; a nonce is not authorization by itself.
Useful support evidence includes product ID and URL, the existing tab keys, expected and actual titles, which tab is absent, Free and Pro versions, WordPress and WooCommerce versions, theme/builder, tab-related plugins, cache/CDN, and desktop/mobile screenshots. Remove credentials, customer data, payment details, and full license keys.
FAQ
Does renaming a tab change its content?
No. The plugin changes only the existing native tab's visible title value.
Can it create a Reviews or Additional information tab that is missing?
No. A rename plugin should not invent a callback, content, visibility rule, or priority.
Why does one builder still show the old name?
That builder may own its tab interface and bypass WooCommerce's native product-tabs filter.
What happens when Pro expires?
The Free store-wide names continue locally. Category and individual-product names require an active product-bound license.
Focused plugin
Use the one-job implementation.
Rename WooCommerce's existing Description, Additional information, and Reviews tabs without changing content, callbacks, order, visibility, products, reviews, carts, checkout, or orders.