=== Product Tabs Studio ===
Contributors: proctstabsmanagers
Tags: woocommerce, product tabs, custom tabs, woocommerce tabs, product page
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Custom product tabs for WooCommerce. Global tabs by category, tag or brand, free. Reads your existing tabs from other plugins, deleting nothing.

== Description ==

Product Tabs Studio adds custom tabs to WooCommerce product pages: tabs written for a single product, and global tabs that appear automatically on every product matching a category, tag, brand, product type or a list of products.

It was built around three promises. Your tabs never disappear: saving is verified and refuses an incomplete form instead of overwriting, and every product keeps its last versions with one-click restore. Your default WooCommerce tabs stay exactly where WooCommerce puts them unless you move them yourself. And you are never locked in: if you already use another tabs plugin, this one reads its data and shows those tabs straight away, imports them only when you ask, and leaves the originals untouched so you can go back.

= Custom product tabs, per product or global =
* Unlimited tabs per product with the WordPress editor (visual/text), drag-and-drop order, enable/disable, editable tab key (#tab-key links).
* Global tabs created once and shown on all products, or only on products matching your rules: category (with subcategories), tag, brand, specific products, product type, with include and exclude lists.
* Customize or hide a global tab on a single product without touching the global content.

= Show a tab by category, brand or product — free =
The EU General Product Safety Regulation (GPSR, Regulation (EU) 2023/988) asks online shops to show the manufacturer's name, address and electronic contact – and, for goods made outside the EU, the EU responsible person – with the product offer. Product Tabs Studio ships two ready-made templates for this ("Manufacturer information" and "EU responsible person") in the template library. Create one global tab per brand or category, insert the template, fill in the details and choose "Products matching rules": the tab appears on every matching product. Brand rules work with WooCommerce Brands, Perfect Brands and YITH Brands. Everything described here is in the free plugin; no add-on is needed. (Automatic per-brand placeholders such as {brand:manufacturer_name} are a Pro feature.)

= The source is public, so you are not trusting a black box =
The whole plugin is on GitHub at https://github.com/Carreraander/product-tabs-studio-plugin, the same
code as the ZIP you install. If this plugin ever stops being maintained, you can read it, fork it or
hand it to your own developer. That matters more than usual here: a lot of the shops arriving at this
plugin do so because the one they were using went quiet.

= Your tabs never disappear =
* Saving is verified: if the form arrives incomplete (PHP max_input_vars), nothing is overwritten and you get a message that says how to fix it.
* Every product keeps the last five versions of its tabs — restore with one click.
* Quick edit, bulk edit, the REST API and the block product editor never touch your tabs. The WooCommerce CSV importer only writes them when you deliberately include the tab column.

= Reorder, rename or hide the default WooCommerce tabs — free =
Description, Additional information and Reviews stay exactly where WooCommerce puts them unless you move them. Rename or hide them from the Tab order screen.

= Migrate from other tab plugins in one click =
If you used Custom Product Tabs for WooCommerce (YIKES / Code Parrots), Product Tabs for WooCommerce (Barn2) or WB Custom Product Tabs, your tabs are shown as soon as you activate Product Tabs Studio and deactivate the old plugin — nothing to migrate, nothing deleted. While the old plugin is still active it keeps rendering its own tabs and Product Tabs Studio stays out of the way, so the two never fight over the same product. If you would rather switch the rendering over before deactivating anything, there is an opt-in setting for it under Tab Settings → Compatibility; it is off by default, it never deletes anything, and turning it off again restores the other plugin's screens. Import them when you are ready (dry run, progress bar, verification report, rollback). Your old data is left untouched so you can always go back.

= Works with your theme and page builder =
Classic themes and block themes (Product Details block). When a page builder takes over the single-product template, the plugin detects Elementor, Divi, Bricks and WPBakery and tells you which rendering mode to use. Shortcodes [ptstudio_tabs] and [ptstudio_tab key="…"] for custom layouts. Three rendering modes and an automatic safe mode if a theme filter breaks.

= Built for reliability =
Tools & Health page with a system report you can paste into a support request, Site Health checks, an activity log, JSON export/import, WooCommerce CSV support, WPML and Polylang configuration (wpml-config.xml and translated-field mapping), HPOS compatible. Runs on PHP 7.4 to 8.3; the code contains no PHP 8-only syntax. Performance measured on a catalogue of 2,000 products with 300 global tabs.

= Product Tabs Studio Pro =
Product Tabs Studio Pro is a separate paid plugin for shops and agencies that run a real catalogue. It adds tab rules by attribute, price, stock status or quantity, shipping class, SKU pattern, custom field, visitor role and date schedule, and rule groups (OR between groups, AND inside one); catalogue-wide bulk jobs with a preview and an undo (assign or remove a global tab, convert repeated product tabs into one global tab, find and replace in tab content, copy one product's tabs to many); and content placeholders such as {sku}, {attribute:pa_size} and {brand:manufacturer_name}, with manufacturer and EU responsible-person fields on brand and category terms, so filling in a brand once fills the manufacturer block on every product of that brand. Licences are annual and cover 1, 5 or 25 sites. Everything described in the rest of this page is in the free plugin and stays free.

= Privacy =
Product Tabs Studio does not collect anything about your site and sends nothing anywhere unless you agree to it. On activation you are shown an optional opt-in from Freemius, our licensing provider; it is a dismissible notice, not a wall, and skipping it leaves every feature working. If you do opt in, your site URL, WordPress and PHP versions and an anonymised administrator identifier are shared with Freemius (privacy policy: https://freemius.com/privacy/), and you can revoke it at any time from the plugin's account screen. There is no tracking, no analytics and no remote logging beyond that; the plugin loads no scripts, styles or fonts from other servers. The single exception is under your control: if you use the [ptstudio_youtube] shortcode, WordPress asks YouTube for the embed code for that video when the tab is first rendered, exactly as it does for a YouTube link pasted into a post (YouTube privacy policy: https://policies.google.com/privacy). Video embeds in tab content are restricted to an allow-list of hosts you can edit in the settings.

= Developers =
Filters ptstudio_resolved_tabs, ptstudio_tab_content, ptstudio_tab_heading, ptstudio_content_pipeline, ptstudio_rule_types; template overrides in yourtheme/product-tabs-studio/. All code shipped here is plain, unminified PHP, JavaScript and CSS: there is no build step and nothing to un-compile.

== Installation ==
1. Upload the plugin folder to /wp-content/plugins/ or install it from Plugins → Add New.
2. Activate it. WooCommerce 7.0 or newer must be active.
3. Go to Products → Product Tabs to create global tabs, or open any product and use the "Product Tabs" panel.
4. Coming from another tab plugin? Open Products → Tabs Tools & Health.

== Frequently Asked Questions ==

= I am coming from another tabs plugin. Will my existing tabs still work? =
Yes. Activate Product Tabs Studio and your existing tabs are read directly, with the same order, keys and CSS classes. Deactivate the old plugin afterwards. Nothing is deleted, and by default a copy in the old format is kept in sync so you can go back.

= The paid add-on of my old tabs plugin can no longer be bought. Does this replace it? =
Partly, and here is the honest split. The add-on sold for Custom Product Tabs for WooCommerce charged for global tabs, tabs by category or tag, changing tab order, removing the default WooCommerce tabs and seeing which products use a saved tab. All of those are in this plugin for free. Bulk assigning tabs across a catalogue is in the paid tier here. One thing it did that this plugin does not do at all is make WordPress and WooCommerce search look inside tab content; if that is what you needed, this is not your answer.

= Where is the source code? =
On GitHub: https://github.com/Carreraander/product-tabs-studio-plugin. It is the same code as the ZIP, published under the GPLv2, so you can read it before installing and fork it if you ever need to.

= Do I have to migrate anything? =
No. Import is optional and only needed to edit Barn2 or WB tabs inside Product Tabs Studio.

= Can saving a product lose my tabs? =
Not with this plugin. The save is verified and aborted if the form is incomplete (for example when PHP max_input_vars is too low); the last five versions are kept per product and can be restored from the product editor.

= Does the plugin change the order of the default WooCommerce tabs? =
No. Description, Additional information and Reviews keep their WooCommerce priorities unless you move them on the Tab order screen.

= Can I show manufacturer information for the GPSR on my products? =
Products → Product Tabs → Add New → Insert template → "Manufacturer information (GPSR)", then choose "Products matching rules" and pick the brand or category. For goods made outside the EU add a second tab from the "EU responsible person" template.

= Can one tab appear on every product? =
Create a global tab and choose "All products".

= Can a tab appear only on one brand or category? =
Yes, free: choose "Products matching rules" and select the brand (WooCommerce Brands, Perfect Brands or YITH Brands) or category.

= My tabs do not appear with my theme or page builder. What now? =
Open Products → Tabs Tools & Health → Health. It tells you whether your theme overrides the tabs template or removed the tabs output, and offers the shortcode alternative.

= Is it compatible with WPML, Polylang, HPOS, Elementor and block themes? =
Not all in the same way, so here is the honest answer. HPOS: yes, compatibility is declared and the plugin never touches orders. Block themes: yes, tabs render in the Product Details block. WPML and Polylang: the plugin ships the configuration they need (wpml-config.xml and translated-field mapping) so tabs are translatable; it has not been certified by either vendor. Elementor, Divi, Bricks and WPBakery: when one of them takes over the single-product template, the plugin detects it and tells you which rendering mode to use; the shortcodes cover layouts a builder does not hook.

= Will my tabs look exactly the same as with the old plugin? =
Almost. There is one deliberate difference worth knowing: shortcodes in tab content are expanded once, where Custom Product Tabs for WooCommerce (YIKES) expanded them twice. In practice this only shows if you wrote an escaped shortcode such as [[gallery]] to display the text rather than run it; that now stays escaped, which is the expected behaviour.

= How do I import tabs from another plugin? =
Products → Tabs Tools & Health → Migrate → Dry run, then Migrate, then Verify.

= What data does the plugin send? =
None, unless you opt in to update notifications (see Privacy).

== Screenshots ==
1. Product Tabs panel in the product editor with drag-and-drop order and restore.
2. Global tab editor with rules (category, brand, products).
3. Product Tabs list with usage counts.
4. Tab order screen with the default WooCommerce tabs.
5. Tools & Health: migration cards with dry run and verification.
6. System report and health checks.
7. Tabs on the storefront.

== Changelog ==

= 1.0.0 =
* Initial release: per-product tabs, global tabs with category/tag/brand/product/type rules, tab order screen, verified saving with history, read-through for YIKES data, importers for Barn2 and WB Custom Product Tabs, JSON/CSV export-import, Tools & Health, WPML/Polylang, HPOS.

== Upgrade Notice ==

= 1.0.0 =
First release.
