Moving from Product Tabs for WooCommerce (Barn2)
Product Tabs Studio reads the data of Product Tabs for WooCommerce by Barn2 through a read-only adapter, and can import it when you want to edit it here. This page describes exactly what is read, what the importer maps and what is left alone.
That plugin is actively maintained. Nothing here says you have to move. The reasons shops do are rules beyond product categories, tabs written for a single product rather than overrides of a global tab, and per-product version history.
What that plugin stores
Barn2 keeps each tab as a post of the woo_product_tab type: the post title is the tab label, the post content is the default content, the post slug is the tab key (wpt-{ID} for tabs created since 2.1.1) and the menu order is the priority. Whether the tab is global and which categories it applies to are stored in the meta keys _wpt_display_tab_globally and _wpt_conditions_category. A product that replaces a tab's content carries _wpt_override_{key} and _wpt_field_{key}. Site-wide preferences live in the wpt_options option.
Before you import anything
Activate Product Tabs Studio and deactivate the Barn2 plugin: every published Barn2 tab that applies to a product is rendered from where it already is. The adapter runs only while the Barn2 plugin is inactive — with both active, Barn2 renders its own tabs and Product Tabs Studio stays out of the way so nothing is printed twice. An admin notice says which state you are in.
The adapter follows the original behaviour on the details that are visible to a customer:
- The tab's menu order becomes an explicit priority, so tabs that sat before the Description tab stay there.
- Headings are hidden, because that plugin prints none. No CSS class of ours is added around the content.
- Where a product overrides a tab, the product's content is shown instead of the tab's own.
- A tab whose content would be empty is dropped rather than rendered as an empty panel, matching the original check.
What the importer maps
Products → Tabs Tools & Health → Migrate runs a dry run first, then the import, then a verification pass that compares both renderings. Global tabs are created first, products second. Barn2's own data is never modified by any step.
| Barn2 | Product Tabs Studio |
|---|---|
| Post title, content and status (published or draft; trashed tabs are skipped) | The same fields on a global tab |
| Post slug | Tab key, verbatim, so anchors and theme CSS survive |
| Menu order | Explicit priority, the same number |
| Global, or no categories set | Rule mode "All products" |
| Not global, with categories | Rule mode "Products matching rules", category rule including subcategories |
| No heading in the original output | Heading set to hidden |
| Source post | Recorded as the tab's origin and shown as a badge in the tab list |
| Barn2 | Product Tabs Studio |
|---|---|
| Override set to yes with content, or content present from before 2.x with no override flag | A row on the product linked to the imported global tab, with "Customize content for this product" on |
| Override set to no, with content left over from an earlier override | The same row with customisation off, the leftover content kept as a snapshot so it can be recovered. Listed in the report. |
| Override set to yes with an empty field | No row. The global content shows, exactly as before. |
| Barn2 | Product Tabs Studio |
|---|---|
| Compatibility mode that disables the content filter | Rendering mode set to isolated |
| Delete data on uninstall | The same setting under Tab Settings → Data |
| Renamed, hidden or reprioritised default tabs (from its paid version) | The matching entries on the Tab order screen |
_wpt_option_use_default_for_all, _wpt_option_priority | Ignored; menu order is the priority. A line in the report says so. |
The dry run also flags things worth a look before you commit: tabs whose priority is below 10, which places them before the Description tab and is easy to do by accident; tabs with an empty slug or a slug in the older title-based format; tabs with empty content; and tabs marked as not global that have no categories, which the original code shows everywhere.
Step by step
- Back up the database, or work on staging first.
- Install and activate Product Tabs Studio.
- Deactivate Product Tabs for WooCommerce. Do not delete it yet.
- Check a few product pages. The tabs are now rendered by the adapter.
- Open Products → Tabs Tools & Health → Migrate and press Dry run. Read the report.
- Press Migrate, then Verify. Verification renders every migrated product both ways and compares the tab keys, titles and a checksum of each panel.
- Once verification passes, the adapter switches off and the native data takes over. You can then delete the old plugin. Its uninstall routine only removes its data if its own "delete data" option was switched on, and by that point your tabs no longer depend on it.
Going back
Rollback removes exactly what the migration created: the global tabs it made and the native tab data of products it wrote, skipping any product you have edited by hand since — those are kept and listed. The adapter is switched back on, and the Barn2 data, which was never touched, renders again.
Questions
Do I have to import to keep my tabs visible?
No. The adapter is enough. Import when you want to edit that content in Product Tabs Studio, or to use rules the original does not offer.
Will the tab order change?
No. Each imported tab keeps its menu order as an explicit priority. If you would rather let the plugin place them automatically before the Reviews tab, clear the priority field on the tab and it becomes automatic.
Will my tab links and CSS still work?
Tab keys are the original post slugs, so #tab-… anchors and any CSS selector based on the key still match. That plugin adds no markup of its own inside the panel, so no legacy CSS mode is needed.
What happens to categories with subcategories?
Category rules are imported with "include products in subcategories" switched on, which is how the original evaluates them.
Can I run the import twice?
Yes. Global tabs are matched by their recorded origin and updated rather than duplicated, and products already migrated are skipped unless you ask for a redo. The import is also resumable: it works in batches of 50 and remembers where it stopped.
Who can edit tabs afterwards?
Shop managers and administrators. Tabs use WooCommerce product capabilities, so an author or contributor account cannot reach them.