{"id":296163,"date":"2026-04-24T13:11:08","date_gmt":"2026-04-24T13:11:08","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/kitgenix-custom-tabs-for-woocommerce\/"},"modified":"2026-05-07T18:07:53","modified_gmt":"2026-05-07T18:07:53","slug":"kitgenix-custom-tabs-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/kitgenix-custom-tabs-for-woocommerce\/","author":23310025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.1","stable_tag":"trunk","tested":"7.0","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Kitgenix Custom Tabs for WooCommerce","header_author":"Kitgenix","header_description":"Add custom WooCommerce product tabs with per-product content, global tabs, and lightweight controls.","assets_banners_color":"937cc1","last_updated":"2026-05-07 18:07:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/kitgenix","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/kitgenix-custom-tabs-for-woocommerce\/","header_author_uri":"https:\/\/kitgenix.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":147,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kitgenix","date":"2026-04-24 13:12:57"},"1.1.0":{"tag":"1.1.0","author":"kitgenix","date":"2026-05-07 18:08:29"}},"upgrade_notice":{"1.1.1":"<p>Adds saved tab templates, snippet insertion, and duplication so merchants can reuse common tab content much faster.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3514668,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3514668,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3514668,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3514668,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3525873,"resolution":"1","location":"assets","locale":"","width":2698,"height":1462},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3525873,"resolution":"2","location":"assets","locale":"","width":2698,"height":1462},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3525873,"resolution":"3","location":"assets","locale":"","width":2698,"height":1462},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3525873,"resolution":"4","location":"assets","locale":"","width":2698,"height":1462},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3525873,"resolution":"5","location":"assets","locale":"","width":2698,"height":1462},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3525873,"resolution":"6","location":"assets","locale":"","width":3020,"height":1462},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3525873,"resolution":"7","location":"assets","locale":"","width":2698,"height":1462}},"screenshots":{"1":"Product data panel with the Custom Tabs tab.","2":"Modal editor with title, nickname, slug, priority, and rich content.","3":"Templates screen for reusable tab snippets.","4":"Global Tabs screen for store-wide tabs.","5":"Settings screen for limits, positioning, shortcode support, and heading visibility.","6":"Tab on product page.","7":"Support tab with cached usage totals."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[14591,746,16285,2148,286],"plugin_category":[45],"plugin_contributors":[246171],"plugin_business_model":[],"class_list":["post-296163","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-tabs","plugin_tags-product","plugin_tags-product-tabs","plugin_tags-tabs","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-kitgenix","plugin_committers-kitgenix"],"banners":{"banner":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/banner-772x250.png?rev=3514668","banner_2x":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/banner-1544x500.png?rev=3514668","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/icon-128x128.png?rev=3514668","icon_2x":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/icon-256x256.png?rev=3514668","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-1.png?rev=3525873","caption":"Product data panel with the Custom Tabs tab."},{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-2.png?rev=3525873","caption":"Modal editor with title, nickname, slug, priority, and rich content."},{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-3.png?rev=3525873","caption":"Templates screen for reusable tab snippets."},{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-4.png?rev=3525873","caption":"Global Tabs screen for store-wide tabs."},{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-5.png?rev=3525873","caption":"Settings screen for limits, positioning, shortcode support, and heading visibility."},{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-6.png?rev=3525873","caption":"Tab on product page."},{"src":"https:\/\/ps.w.org\/kitgenix-custom-tabs-for-woocommerce\/assets\/screenshot-7.png?rev=3525873","caption":"Support tab with cached usage totals."}],"raw_content":"<!--section=description-->\n<p><strong>Kitgenix Custom Tabs for WooCommerce<\/strong> lets you add product-specific custom tabs from the WooCommerce product editor, reuse saved tab templates, and duplicate existing tabs when products only need small content variations.<\/p>\n\n<p>Designed to be lightweight and modular:\n- Add tabs per product (title, optional nickname, optional slug, optional priority\/position, rich content)\n- Add global tabs that apply to every product (optional)\n- Optional shortcode processing for tab content\n- Safety limits to keep the product editor fast (max tabs per product)\n- Optional setting to hide the tab heading inside the tab content panel<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Modal-based tab editor powered by Quill rich-text editing with inline validation.<\/li>\n<li>Saved tab templates for reusable snippets like sizing guides, warranties, ingredient lists, and care instructions.<\/li>\n<li>Fast duplication for product tabs and global tabs so merchants can clone and tweak existing content instead of rewriting it.<\/li>\n<li>Automatic slug generation from the tab title, with optional manual slug control when you need stable identifiers.<\/li>\n<li>Product-specific tabs plus store-wide global tabs managed from a dedicated Global Tabs screen.<\/li>\n<li>Templates can be inserted directly into the product editor and the Global Tabs screen without leaving the current workflow.<\/li>\n<li>Flexible placement controls using a default position preset plus priority base\/step settings for tab ordering.<\/li>\n<li>Optional shortcode rendering inside tab content.<\/li>\n<li>Optional hidden tab headings when you want the title to appear only on the tab label itself.<\/li>\n<li>Cached usage stats in the Support tab so large stores can see how many products and tabs are in use without expensive queries.<\/li>\n<li>HPOS compatibility declaration for modern WooCommerce installs.<\/li>\n<\/ul>\n\n<h3>Quick Start<\/h3>\n\n<ol>\n<li>Install and activate the plugin (WooCommerce required).<\/li>\n<li>Go to Kitgenix \u2192 Custom Tabs to configure settings.<\/li>\n<li>Edit a product: Products \u2192 Edit \u2192 Product data \u2192 Custom Tabs.<\/li>\n<li>Add one or more tabs, then Update the product.<\/li>\n<\/ol>\n\n<p>Optional: add store-wide tabs under Kitgenix \u2192 Custom Tabs \u2192 Global Tabs.\nOptional: save reusable snippets under Kitgenix \u2192 Custom Tabs \u2192 Templates, then insert them into products or global tabs in one click.\nOptional: use the settings screen to control maximum tabs, default tab positions, shortcode support, and heading visibility.<\/p>\n\n<h3>Developers<\/h3>\n\n<p>Text domain:\n- <code>kitgenix-custom-tabs-for-woocommerce<\/code><\/p>\n\n<p>Settings option:\n- <code>kitgenix_custom_tabs_for_woocommerce_settings<\/code><\/p>\n\n<p>Settings group (Settings API):\n- <code>kitgenix_custom_tabs_for_woocommerce_settings_group<\/code><\/p>\n\n<p>Settings keys (stored inside the option array):\n- <code>enabled<\/code> (bool\/int)\n- <code>max_tabs<\/code> (int)\n- <code>allow_shortcodes<\/code> (bool\/int)\n- <code>priority_base<\/code> (int)\n- <code>priority_step<\/code> (int)\n- <code>hide_tab_heading<\/code> (bool\/int)\n- <code>tab_templates<\/code> (array of reusable tab rows)\n- <code>global_tabs<\/code> (array of tab rows)<\/p>\n\n<p>Sanitization behavior:\n- The sanitize callback merges submitted values into the existing option, so saving one settings tab\/form does not wipe values from other tabs.<\/p>\n\n<p>Post meta:\n- <code>kitgenix_custom_tabs_for_woocommerce_tabs<\/code> (array)<\/p>\n\n<p>Transients:\n- <code>kitgenix_custom_tabs_for_woocommerce_do_activation_redirect<\/code> (short-lived activation redirect flag)\n- <code>kitgenix_custom_tabs_for_woocommerce_usage_stats<\/code> (cached support-tab usage totals)\n- <code>kitgenix_hub_wporg_active_installs_v1<\/code> (Kitgenix hub cache; active install counts)\n- <code>kitgenix_hub_wporg_ratings_v1<\/code> (Kitgenix hub cache; ratings percentage)\n- <code>kitgenix_hub_wporg_media_v1<\/code> (Kitgenix hub cache; banners\/icons)<\/p>\n\n<p>Nonces (exact identifiers):\n- Product save nonce field: <code>kitgenix_custom_tabs_for_woocommerce_tabs_nonce<\/code>\n- Product save nonce action: <code>kitgenix_custom_tabs_for_woocommerce_tabs_save<\/code>\n- Settings form nonce field: <code>kitgenix_custom_tabs_for_woocommerce_settings_nonce<\/code>\n- Settings form nonce action: <code>kitgenix_custom_tabs_for_woocommerce_settings_save<\/code><\/p>\n\n<p>Hooks used:\n- <code>plugins_loaded<\/code> (action): bootstrap plugin when WooCommerce is available\n- <code>init<\/code> (action): load translations\n- <code>admin_init<\/code> (action): register settings; perform activation redirect once\n- <code>admin_menu<\/code> (action): ensure shared Kitgenix hub menu; register plugin submenu page\n- <code>admin_head<\/code> (action): inject shared Kitgenix hub admin menu icon CSS\n- <code>admin_enqueue_scripts<\/code> (action): enqueue hub\/admin\/product editor assets\n- <code>plugin_action_links_{plugin_basename}<\/code> (filter): add \u201cSettings\u201d link on Plugins screen\n- <code>before_woocommerce_init<\/code> (action): declare WooCommerce HPOS compatibility\n- <code>woocommerce_product_tabs<\/code> (filter): inject frontend tabs\n- <code>woocommerce_product_data_tabs<\/code> (filter): add Product data tab\n- <code>woocommerce_product_data_panels<\/code> (action): render Product data panel\n- <code>woocommerce_process_product_meta<\/code> (action): save product tab meta<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin can connect to the WordPress.org Plugins API when you view the shared Kitgenix admin hub page.\nIt uses WordPress core's <code>plugins_api()<\/code> to fetch plugin information (such as active install counts and ratings) for Kitgenix plugins, and caches results in transients.\nNo customer\/order\/product data is sent.<\/p>\n\n<h3>Security &amp; Privacy<\/h3>\n\n<ul>\n<li>Admin actions are protected with capability checks.<\/li>\n<li>Product tab saving is protected with a plugin nonce.<\/li>\n<li>Settings are saved via WordPress' Settings API (options.php), which is nonce-protected by WordPress core.<\/li>\n<li>Tab content is output with WordPress formatting and safe HTML handling.<\/li>\n<\/ul>\n\n<h3>Uninstall<\/h3>\n\n<p>On uninstall, the plugin removes:\n- The settings option\n- All saved product tab meta entries<\/p>\n\n<p>Note: the uninstall handler does not explicitly delete short-lived transients or hub cache transients.<\/p>\n\n<h3>Support Development<\/h3>\n\n<p>If this plugin saves you time, you can support development here:\nhttps:\/\/buymeacoffee.com\/kitgenix<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Built with \u2764\ufe0e by @kitgenix - https:\/\/kitgenix.com<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> (or install via Plugins \u2192 Add New).<\/li>\n<li>Activate the plugin.<\/li>\n<li>Configure: Kitgenix \u2192 Custom Tabs.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20edit%20tabs%3F\"><h3>Where do I edit tabs?<\/h3><\/dt>\n<dd><p>Edit a product and open Product data \u2192 Custom Tabs.<\/p><\/dd>\n<dt id=\"do%20tabs%20support%20shortcodes%3F\"><h3>Do tabs support shortcodes?<\/h3><\/dt>\n<dd><p>Yes, if enabled in the plugin settings.<\/p><\/dd>\n<dt id=\"can%20i%20control%20the%20order%20of%20tabs%3F\"><h3>Can I control the order of tabs?<\/h3><\/dt>\n<dd><p>Yes. You can set a priority per tab. Lower numbers appear earlier.<\/p><\/dd>\n<dt id=\"can%20i%20save%20a%20tab%20as%20a%20reusable%20template%3F\"><h3>Can I save a tab as a reusable template?<\/h3><\/dt>\n<dd><p>Yes. The Templates tab lets you save reusable tab snippets, and both the product editor and Global Tabs screen can insert those saved templates directly into a new tab row.<\/p><\/dd>\n<dt id=\"can%20i%20duplicate%20an%20existing%20tab%3F\"><h3>Can I duplicate an existing tab?<\/h3><\/dt>\n<dd><p>Yes. Product-specific tabs and global tabs now include a Duplicate action so you can clone an existing row, keep the content, and only change the parts that differ.<\/p><\/dd>\n<dt id=\"can%20i%20add%20store-wide%20tabs%20to%20every%20product%3F\"><h3>Can I add store-wide tabs to every product?<\/h3><\/dt>\n<dd><p>Yes. Use the Global Tabs tab in the plugin settings to create tabs that are added to every product automatically.<\/p><\/dd>\n<dt id=\"do%20tabs%20support%20rich%20content%3F\"><h3>Do tabs support rich content?<\/h3><\/dt>\n<dd><p>Yes. The editor supports rich-text formatting in a fast modal workflow powered by Quill.<\/p><\/dd>\n<dt id=\"can%20i%20hide%20the%20heading%20inside%20the%20tab%20content%3F\"><h3>Can I hide the heading inside the tab content?<\/h3><\/dt>\n<dd><p>Yes. There is a setting to keep the heading on the tab label only and hide the repeated heading inside the tab panel.<\/p><\/dd>\n<dt id=\"does%20it%20support%20hpos%3F\"><h3>Does it support HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares WooCommerce HPOS compatibility.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0 (7 May 2026)<\/h4>\n\n<ul>\n<li>New: Added a dedicated Templates screen for saving reusable tab snippets such as sizing guides, warranty text, ingredient lists, and care instructions.<\/li>\n<li>New: Added one-click template insertion inside both the WooCommerce product editor and the Global Tabs screen.<\/li>\n<li>New: Added Duplicate actions for product tabs and global tabs so merchants can clone an existing tab and edit the copy.<\/li>\n<li>Improvement: Product editors now link directly to the Templates screen from the Custom Tabs panel for faster merchandising workflows.<\/li>\n<li>Improvement: Saved templates now use their own library limit instead of being capped by the per-product tab limit.<\/li>\n<\/ul>\n\n<h4>1.0.0 (07 April 2026)<\/h4>\n\n<ul>\n<li>New: Initial release.<\/li>\n<li>New: Product-specific custom tabs added via Products -&gt; Edit -&gt; Product data -&gt; Custom Tabs.<\/li>\n<li>New: Global tabs that can be applied to every product (Kitgenix -&gt; Custom Tabs -&gt; Global Tabs).<\/li>\n<li>New: Tab fields: title, optional nickname, optional slug, position\/priority, and rich content.<\/li>\n<li>New: Optional shortcode processing for tab content.<\/li>\n<li>New: Settings to control max tabs per product, default positioning (base + step), and whether to hide the tab heading inside the tab.<\/li>\n<li>New: Admin UI with a fast modal rich-text editor workflow.<\/li>\n<li>Security: Admin actions protected with capability checks and nonces.<\/li>\n<li>Cleanup: Removes plugin settings and all saved product tab meta.<\/li>\n<li>UI: Improved the Kitgenix admin header layout and social icon links (compact icon buttons) across settings and the Kitgenix hub.<\/li>\n<li>Fix: Admin notices now display above the Kitgenix header using the WordPress standard notice area.<\/li>\n<li>Fix: Added defensive notice normalization to prevent notices being relocated into the header by other scripts.<\/li>\n<li>UI: Admin tables inside Kitgenix pages now use Kitgenix styling for a more consistent branded look.<\/li>\n<li>Fix: Added spacing between adjacent action links\/buttons (e.g., Edit\/Delete).<\/li>\n<li>Fix: Replaced the expensive support-tab usage query with cached usage stats and cache invalidation on save\/delete.<\/li>\n<li>Fix: Escaped shared Kitgenix hub card media output for WordPress coding standards compliance.<\/li>\n<li>Maintenance: Updated the plugin Author URI to the public Kitgenix WordPress.org profile and replaced the old custom admin-menu icon CSS with the native Dashicons icon.<\/li>\n<\/ul>","raw_excerpt":"Add custom WooCommerce product tabs with per-product content, reusable templates, global tabs, and lightweight controls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/296163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=296163"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kitgenix"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=296163"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=296163"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=296163"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=296163"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=296163"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=296163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}