{"id":147380,"date":"2021-09-18T09:51:05","date_gmt":"2021-09-18T09:51:05","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/accessories-for-woocommerce\/"},"modified":"2026-03-10T11:46:55","modified_gmt":"2026-03-10T11:46:55","slug":"f12-wc-accessories","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/f12-wc-accessories\/","author":16900441,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.3.6","stable_tag":"trunk","tested":"6.7.5","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Forge12 Accessories for WooCommerce","header_author":"Forge12 Interactive GmbH","header_description":"Add accessories for WooCommerce products and categories","assets_banners_color":"","last_updated":"2026-03-10 11:46:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.forge12.com\/product\/woocommerce-zubehoer\/","header_author_uri":"https:\/\/www.forge12.com","rating":0,"author_block_rating":0,"active_installs":80,"downloads":2719,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"forge12","date":"2021-09-20 15:52:47"},"1.11":{"tag":"1.11","author":"forge12","date":"2021-09-18 12:20:05"},"1.12":{"tag":"1.12","author":"forge12","date":"2021-09-20 15:54:43"},"1.2":{"tag":"1.2","author":"forge12","date":"2021-09-21 10:00:05"},"1.21":{"tag":"1.21","author":"forge12","date":"2021-09-21 10:16:56"},"1.22":{"tag":"1.22","author":"forge12","date":"2021-09-21 14:57:43"},"1.23":{"tag":"1.23","author":"forge12","date":"2021-11-18 12:49:11"},"1.39":{"tag":"1.39","author":"forge12","date":"2022-01-24 10:28:59"},"1.40":{"tag":"1.40","author":"forge12","date":"2022-09-07 08:00:01"},"1.41":{"tag":"1.41","author":"forge12","date":"2022-09-07 08:25:40"},"1.42":{"tag":"1.42","author":"forge12","date":"2022-09-28 14:41:26"},"2.3.2":{"tag":"2.3.2","author":"forge12","date":"2026-03-02 11:53:18"},"2.3.4":{"tag":"2.3.4","author":"forge12","date":"2026-03-03 14:24:48"},"2.3.5":{"tag":"2.3.5","author":"forge12","date":"2026-03-05 11:59:49"}},"upgrade_notice":{"2.3.6":"<p>Fixes hidden and draft products showing blank spaces in accessory displays, array to string conversion warning in cart crossselling, and adds cart template filter for Pro layout support.<\/p>","2.3.5":"<p>Fixes fatal error when WooCommerce is not active. Plugin now gracefully skips frontend features if WooCommerce functions are unavailable.<\/p>","2.3.4":"<p>Fixes broken &quot;Settings&quot; link on the dashboard quick actions.<\/p>","2.3.2":"<p>Adds &quot;Upgrade to Pro&quot; link on the plugins page.<\/p>","2.3.1":"<p>Security and stability release. Fixes XSS vulnerability in product title placeholders, PHP 8.2+ compatibility, null-check issues and adds nonce verification to REST and inline add-to-cart endpoints.<\/p>","2.3.0":"<p>Modal Design System with 8 customizable elements and live preview. All AJAX endpoints migrated to REST API for CDN compatibility. Reset to Defaults button for design settings.<\/p>","2.2.0":"<p>Dedicated Accessories tab in product editor, unified accessory picker, feature tooltips, customizable Recommended badge text, stock alert badges in checkbox\/inline layouts, new template hooks. Enhanced design preview. Translations for DE, ES, FR.<\/p>","2.1.0":"<p>Feature release: Design System with color customization, Display Options to control which product details are shown, new Inline Accessories layout, and layout save bug fix.<\/p>","2.0.2":"<p>Fixes stale product names in the Accessory Overview after renaming products.<\/p>","2.0.1":"<p>Adds layout sub-settings for optional accessories when Pro is active. Fixes an undefined variable warning on the product edit screen.<\/p>","2.0.0":"<p>Major update. Complete rewrite with modern architecture. All features from previous versions are included. Required accessories, cart lock, price summary and product hints are now part of the separate Pro add-on.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3135003,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3135003,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"f12-woo-accessories\/accessories":{"name":"f12-woo-accessories\/accessories","title":"F Woo Accessories Accessories"}},"tagged_versions":["1.1","1.11","1.12","1.2","1.21","1.22","1.23","1.39","1.40","1.41","1.42","2.3.2","2.3.4","2.3.5"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":2601866,"resolution":"1","location":"assets","locale":""},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3472638,"resolution":"10","location":"assets","locale":""},"screenshot-11.jpg":{"filename":"screenshot-11.jpg","revision":3472638,"resolution":"11","location":"assets","locale":""},"screenshot-12.jpg":{"filename":"screenshot-12.jpg","revision":3472638,"resolution":"12","location":"assets","locale":""},"screenshot-13.jpg":{"filename":"screenshot-13.jpg","revision":3472638,"resolution":"13","location":"assets","locale":""},"screenshot-14.jpg":{"filename":"screenshot-14.jpg","revision":3472638,"resolution":"14","location":"assets","locale":""},"screenshot-15.jpg":{"filename":"screenshot-15.jpg","revision":3472638,"resolution":"15","location":"assets","locale":""},"screenshot-16.jpg":{"filename":"screenshot-16.jpg","revision":3472638,"resolution":"16","location":"assets","locale":""},"screenshot-17.jpg":{"filename":"screenshot-17.jpg","revision":3472638,"resolution":"17","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":2601866,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":2601866,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":2601866,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":2602259,"resolution":"5","location":"assets","locale":""},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":2602259,"resolution":"6","location":"assets","locale":""},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3472638,"resolution":"7","location":"assets","locale":""},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3472638,"resolution":"8","location":"assets","locale":""},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3472638,"resolution":"9","location":"assets","locale":""}},"screenshots":{"1":"Accessories displayed on the product page (Grid layout).","2":"Admin dashboard with quick stats and feature overview.","3":"Assigning accessories on the product edit screen.","4":"Feature toggle page for enabling optional features.","5":"Cart crossselling with accessory suggestions."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[56044,13788,147671,73298,286],"plugin_category":[45],"plugin_contributors":[172866],"plugin_business_model":[],"class_list":["post-147380","plugin","type-plugin","status-publish","hentry","plugin_tags-accessories","plugin_tags-cross-sell","plugin_tags-linked-products","plugin_tags-product-bundles","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-forge12","plugin_committers-forge12","plugin_support_reps-forge12marc"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/icon-128x128.png?rev=3135003","icon_2x":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/icon-256x256.png?rev=3135003","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-1.jpg?rev=2601866","caption":"Accessories displayed on the product page (Grid layout)."},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-2.jpg?rev=2601866","caption":"Admin dashboard with quick stats and feature overview."},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-3.jpg?rev=2601866","caption":"Assigning accessories on the product edit screen."},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-4.jpg?rev=2601866","caption":"Feature toggle page for enabling optional features."},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-5.jpg?rev=2602259","caption":"Cart crossselling with accessory suggestions."},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-6.jpg?rev=2602259","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-7.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-8.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-9.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-10.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-11.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-12.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-13.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-14.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-15.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-16.jpg?rev=3472638","caption":""},{"src":"https:\/\/ps.w.org\/f12-wc-accessories\/assets\/screenshot-17.jpg?rev=3472638","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>Forge12 Accessories for WooCommerce<\/strong> lets you link accessory products to your WooCommerce products and product categories. Selected accessories are displayed on the product page so customers can add them to the cart alongside the main product.<\/p>\n\n<p>Whether you sell electronics with compatible cables, furniture with matching cushions, or cameras with lenses \u2013 this plugin makes it easy to suggest the right accessories at the right time.<\/p>\n\n<h4>Key Benefits<\/h4>\n\n<ul>\n<li><strong>Increase Average Order Value<\/strong> \u2013 Suggest relevant accessories directly on the product page.<\/li>\n<li><strong>Save Time<\/strong> \u2013 Assign accessories to entire categories instead of individual products.<\/li>\n<li><strong>Cart Crossselling<\/strong> \u2013 Catch customers at checkout with accessory suggestions in the cart.<\/li>\n<li><strong>Full Control<\/strong> \u2013 Choose position, layout, headings and which accessories to show.<\/li>\n<\/ul>\n\n<h4>Free Features<\/h4>\n\n<ul>\n<li><strong>Optional Accessories<\/strong> \u2013 Assign accessories per product or per product category.<\/li>\n<li><strong>Category Assignment<\/strong> \u2013 Assign accessories to entire product categories at once.<\/li>\n<li><strong>Cart Crossselling<\/strong> \u2013 Display accessories on the cart page for products already in the cart.<\/li>\n<li><strong>Grid, List &amp; Checkbox Layouts<\/strong> \u2013 Display accessories in a responsive grid, list or \"Frequently Bought Together\" checkbox layout.<\/li>\n<li><strong>Inline Accessories<\/strong> \u2013 Show accessories between price and Add to Cart button with checkboxes and live total.<\/li>\n<li><strong>Design System<\/strong> \u2013 Customize colors, border radius and shadows with a visual design editor and preset themes.<\/li>\n<li><strong>Display Options<\/strong> \u2013 Control which product details are shown (image, title, price, stock, SKU, description).<\/li>\n<li><strong>Configurable Grid Columns<\/strong> \u2013 Choose between 2, 3 or 4 columns.<\/li>\n<li><strong>Configurable Position<\/strong> \u2013 Choose where accessories appear on the product page.<\/li>\n<li><strong>Custom Headings<\/strong> \u2013 Set a custom title and description for the accessories section.<\/li>\n<li><strong>Drag &amp; Drop Sorting<\/strong> \u2013 Reorder accessories via drag and drop in the admin.<\/li>\n<li><strong>Shortcode<\/strong> \u2013 Use <code>[f12-woo-accessories]<\/code> to place accessories anywhere.<\/li>\n<li><strong>Template Overrides<\/strong> \u2013 Override plugin templates from your theme.<\/li>\n<li><strong>Responsive Design<\/strong> \u2013 Optimized for desktop, tablet and mobile.<\/li>\n<li><strong>HPOS Compatible<\/strong> \u2013 Fully compatible with WooCommerce High-Performance Order Storage.<\/li>\n<\/ul>\n\n<h4>Optional Features (Free)<\/h4>\n\n<p>These features can be enabled individually from the <strong>Features<\/strong> page:<\/p>\n\n<ul>\n<li><strong>Gutenberg Block<\/strong> \u2013 Place accessories via the block editor.<\/li>\n<li><strong>REST API<\/strong> \u2013 Access accessory data programmatically.<\/li>\n<li><strong>Schema.org Markup<\/strong> \u2013 Add structured data for accessories (isAccessoryOrSparePartFor).<\/li>\n<li><strong>Stock Alerts<\/strong> \u2013 Show stock status indicators on accessory items.<\/li>\n<li><strong>Product Preview Modal<\/strong> \u2013 Quick-view modal for accessory details.<\/li>\n<li><strong>Accessory Grouping<\/strong> \u2013 Group accessories by category with collapsible sections.<\/li>\n<li><strong>Recommended Badge<\/strong> \u2013 Highlight recommended accessories with a visual badge.<\/li>\n<li><strong>Bulk Assignment<\/strong> \u2013 Assign accessories to multiple products at once.<\/li>\n<li><strong>Inventory Check<\/strong> \u2013 Overview of accessory stock levels and warnings.<\/li>\n<li><strong>Import \/ Export<\/strong> \u2013 Import and export accessory assignments via CSV.<\/li>\n<\/ul>\n\n<h4>Pro Add-on<\/h4>\n\n<p>Unlock powerful features with <a href=\"https:\/\/www.forge12.com\/product\/woocommerce-zubehoer\/\">Forge12 Accessories Pro<\/a>:<\/p>\n\n<ul>\n<li><strong>Required Accessories<\/strong> \u2013 Automatically add mandatory products to the cart.<\/li>\n<li><strong>Cart Lock<\/strong> \u2013 Prevent customers from removing required accessories.<\/li>\n<li><strong>Price Summary<\/strong> \u2013 Show combined price of product and accessories.<\/li>\n<li><strong>Product Hint<\/strong> \u2013 Display required accessories below the product excerpt.<\/li>\n<li><strong>Quantity Sync &amp; Quantity Control<\/strong> \u2013 Sync accessory quantities with the main product.<\/li>\n<li><strong>AJAX Live Price<\/strong> \u2013 Update the combined price dynamically without page reload.<\/li>\n<li><strong>Bundle Discounts<\/strong> \u2013 Offer discounts when accessories are purchased together.<\/li>\n<li><strong>Variable Products<\/strong> \u2013 Use variable products as accessories with attribute selection.<\/li>\n<li><strong>Conditional Logic<\/strong> \u2013 Show or hide accessories based on product variations or cart contents.<\/li>\n<li><strong>Smart Rules<\/strong> \u2013 Auto-assign accessories based on categories, tags, attributes or price ranges.<\/li>\n<li><strong>Analytics Dashboard<\/strong> \u2013 Track accessory performance, revenue and conversion rates.<\/li>\n<li><strong>Slider, Accordion &amp; Tabs Layouts<\/strong> \u2013 Additional display layouts for accessories.<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/www.forge12.com\/product\/woocommerce-zubehoer\/\">Get Forge12 Accessories Pro<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>f12-woo-accessoires<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Forge12 Accessories<\/strong> in the admin menu to configure settings.<\/li>\n<li>Edit any WooCommerce product and assign accessories in the <strong>Optional Accessories<\/strong> metabox.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or higher<\/li>\n<li>WooCommerce 6.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20assign%20accessories%20to%20a%20product%3F\"><h3>How do I assign accessories to a product?<\/h3><\/dt>\n<dd><p>Edit the product in WooCommerce and use the <strong>Optional Accessories<\/strong> metabox to search and add accessory products.<\/p><\/dd>\n<dt id=\"can%20i%20assign%20accessories%20to%20an%20entire%20category%3F\"><h3>Can I assign accessories to an entire category?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Products &gt; Categories<\/strong>, edit a category and assign accessories there. All products in that category will automatically show those accessories.<\/p><\/dd>\n<dt id=\"where%20do%20accessories%20appear%20on%20the%20product%20page%3F\"><h3>Where do accessories appear on the product page?<\/h3><\/dt>\n<dd><p>By default, accessories appear below the Add to Cart button. You can change the position in <strong>Forge12 Accessories &gt; Settings<\/strong> or use the <code>[f12-woo-accessories]<\/code> shortcode to place them anywhere.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20appearance%3F\"><h3>Can I customize the appearance?<\/h3><\/dt>\n<dd><p>Yes. Choose between Grid, List or Checkbox (Frequently Bought Together) layouts. You can configure the number of columns, headings and descriptions. For full control, override the template in your theme.<\/p><\/dd>\n<dt id=\"can%20i%20override%20the%20template%3F\"><h3>Can I override the template?<\/h3><\/dt>\n<dd><p>Yes. Copy <code>templates\/woo-accessories.php<\/code> from the plugin folder to <code>yourtheme\/f12-woo-accesoires\/woo-accessories.php<\/code> in your theme directory.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20woocommerce%20hpos%3F\"><h3>Is the plugin compatible with WooCommerce HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully compatible with WooCommerce High-Performance Order Storage (HPOS).<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20variable%20products%3F\"><h3>Does the plugin work with variable products?<\/h3><\/dt>\n<dd><p>The free version supports simple products as accessories. Variable product support is available in the <a href=\"https:\/\/www.forge12.com\/product\/woocommerce-zubehoer\/\">Pro add-on<\/a>.<\/p><\/dd>\n<dt id=\"can%20i%20show%20accessories%20in%20the%20cart%3F\"><h3>Can I show accessories in the cart?<\/h3><\/dt>\n<dd><p>Yes. Enable the <strong>Cart Crossselling<\/strong> feature in the settings. Accessories will be suggested for products already in the cart.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.3.6<\/h4>\n\n<ul>\n<li>Fix: Hidden products (catalog visibility set to \"hidden\") no longer show blank spaces in accessory displays.<\/li>\n<li>Fix: Draft, private and trashed products excluded from all accessory templates regardless of user role.<\/li>\n<li>Fix: Array to string conversion warning in cart crossselling when multiple products with accessories are in the cart.<\/li>\n<li>Fix: Cart crossselling template now uses a flat, deduplicated accessory ID list for consistent rendering.<\/li>\n<li>New: <code>f12_woo_accessories_cart_template<\/code> filter allows Pro layouts (Slider, Accordion, Tabs) to override the cart template.<\/li>\n<li>Improved: Autoplay setting uses toggle switch instead of checkbox for better UX consistency.<\/li>\n<\/ul>\n\n<h4>2.3.5<\/h4>\n\n<ul>\n<li>Fix: Fatal error \"Call to undefined function is_product()\" when WooCommerce is not active. Added function_exists() guards for all WooCommerce conditional functions (is_product, is_cart, is_checkout) and global namespace prefix in namespaced classes.<\/li>\n<\/ul>\n\n<h4>2.3.4<\/h4>\n\n<ul>\n<li>Fix: Dashboard \"Settings\" quick action button linked to non-existent page (<code>_optional<\/code> instead of <code>_optional_accessoire<\/code>).<\/li>\n<\/ul>\n\n<h4>2.3.2<\/h4>\n\n<ul>\n<li>New: \"Upgrade to Pro\" action link on the plugins page when Pro add-on is not active.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Fix: XSS vulnerability \u2013 product titles are now escaped in placeholder replacements.<\/li>\n<li>Fix: Sidebar callable check in admin UI was validating the wrong parameter.<\/li>\n<li>Fix: Dead sorting code removed from Accessory Overview (uasort always returned 0).<\/li>\n<li>Fix: Missing null-check on WC()-&gt;cart in cart crossselling and REST API bulk-add.<\/li>\n<li>Fix: PHP notice for undefined <code>$_GET['page']<\/code> in admin UI rendering.<\/li>\n<li>Fix: PHP 8.2+ deprecation \u2013 declared missing <code>$menu<\/code> property in UI class.<\/li>\n<li>Fix: Null-check added for deleted products in cart accessories template.<\/li>\n<li>Fix: Missing <code>isset()<\/code> on nonce field in category save handler.<\/li>\n<li>Improved: Capability check added to category accessories save handler.<\/li>\n<li>Improved: Nonce verification added to inline accessories add-to-cart.<\/li>\n<li>Improved: REST API <code>cart\/bulk-add<\/code> endpoint now requires WP REST nonce.<\/li>\n<li>Improved: <code>_e()<\/code> replaced with <code>esc_html_e()<\/code> in category admin templates.<\/li>\n<li>Improved: Design system element labels are now translatable.<\/li>\n<li>Improved: JavaScript guard for <code>F12AccessoriesAdmin<\/code> existence before toast calls.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>New: Modal Design System \u2013 fully customizable product preview modal with 8 design elements (overlay, modal body, close button, title, description, price, button, stock badge).<\/li>\n<li>New: Modal-specific settings for max width, overlay color and overlay opacity.<\/li>\n<li>New: Modal typography controls (font size, weight, family, color) for title, description, price and button elements.<\/li>\n<li>New: Modal spacing and border controls for all modal elements.<\/li>\n<li>New: Modal live preview in the Design editor \u2013 updates in real time as you adjust settings.<\/li>\n<li>New: All modal styles use CSS Custom Properties (<code>--f12-modal-*<\/code>) for easy theme overrides.<\/li>\n<li>New: AJAX to REST API migration \u2013 all 12 AJAX endpoints replaced with WordPress REST API endpoints for CDN compatibility.<\/li>\n<li>New: REST namespace <code>f12-accessories\/v1<\/code> with public and admin endpoints.<\/li>\n<li>New: Backward-compatible AJAX wrappers with <code>_deprecated_function()<\/code> notices for existing integrations.<\/li>\n<li>New: \"Reset to Defaults\" button on the Design page \u2013 saves default values directly to the database with confirmation dialog.<\/li>\n<li>Improved: REST API always initialized (no longer dependent on feature toggle).<\/li>\n<li>Improved: Frontend modal element order matches admin preview (title, stock badge, rating, description, price, actions).<\/li>\n<li>Improved: Modal image size uses <code>woocommerce_thumbnail<\/code> for consistent display.<\/li>\n<li>Improved: Modal buttons with correct border and background styling, resistant to WooCommerce CSS overrides.<\/li>\n<li>Fix: Modal skeleton loader correctly hidden after content loads.<\/li>\n<li>Fix: Modal flex layout applied to correct container element.<\/li>\n<li>Updated: German (de_DE, de_DE_formal), Spanish (es_ES) and French (fr_FR) translations.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>New: Enhanced design preview \u2013 live preview now reflects all element settings (container, product card, section title, description, product title, price and button).<\/li>\n<li>New: Preview shows section title and description elements above product cards.<\/li>\n<li>New: Container padding, margin and border are reflected in the design preview.<\/li>\n<li>New: Card padding, margin and border are reflected in the design preview.<\/li>\n<li>New: Typography settings (font size, weight, family, color override) for all elements reflected in the design preview.<\/li>\n<li>New: Spacing (padding, margin) and border settings for all elements reflected in the design preview.<\/li>\n<li>New: Dedicated \"Accessories\" tab in WooCommerce product data panel (replaces Linked Products section).<\/li>\n<li>New: Unified accessory picker with sortable list, search, and inline add\/remove for product and category edit pages.<\/li>\n<li>New: Feature tooltips with detailed descriptions for all toggleable features on the Features page.<\/li>\n<li>New: Customizable \"Recommended\" badge text setting (under Features &gt; Recommended Badge).<\/li>\n<li>New: Stock alert badges now displayed in checkbox and inline accessory layouts.<\/li>\n<li>New: <code>f12_woo_accessories_container_attrs<\/code> filter for adding custom attributes to accessory containers.<\/li>\n<li>New: <code>f12_woo_accessories_item_class<\/code>, <code>f12_woo_accessories_item_attrs<\/code>, and <code>f12_woo_accessories_item_badge<\/code> hooks in checkbox and inline templates.<\/li>\n<li>Improved: Default padding for product title (10px 12px 4px 12px) so text doesn't stick to card edges.<\/li>\n<li>Improved: Default padding for price (4px 10px) for better visual spacing.<\/li>\n<li>Improved: Default button margin (8px 12px 0 12px) so all card elements align properly.<\/li>\n<li>Improved: Category accessory assignment uses the same sortable picker UI as product pages.<\/li>\n<li>Improved: Required Accessories Pro upsell section moved inside the Accessories tab panel.<\/li>\n<li>Improved: <code>f12_woo_accessories_before<\/code> action now passes product ID and accessory IDs.<\/li>\n<li>Fix: Recommended star toggle no longer shows for required accessories.<\/li>\n<li>Fix: AccessoryGrouping::renderGroupTabs() parameters are now optional.<\/li>\n<li>New: Complete translation template (POT) regenerated with all plugin strings.<\/li>\n<li>New: German translation added (de_DE informal and de_DE_formal).<\/li>\n<li>New: Spanish (es_ES) translation added.<\/li>\n<li>New: French (fr_FR) translation added.<\/li>\n<li>Updated: Added missing translation strings for feature tooltips, accessory picker, and admin UI.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>New: Design System with customizable colors, border radius and box shadow via CSS Custom Properties.<\/li>\n<li>New: Design settings page with color pickers, preset themes (Default, Dark, Warm, Minimal) and live preview.<\/li>\n<li>New: Display Options for optional accessories (show\/hide image, title, price, rating, stock, SKU, short description).<\/li>\n<li>New: Maximum accessories limit setting to cap the number of displayed accessories.<\/li>\n<li>New: Inline Accessories layout \u2013 display accessories between price and Add to Cart button with checkboxes.<\/li>\n<li>New: Live total price calculation for Inline and Checkbox layouts.<\/li>\n<li>New: Checkbox layout with \"Frequently Bought Together\" style, select\/deselect all, selection counter and AJAX add-to-cart.<\/li>\n<li>New: List layout CSS with horizontal product cards.<\/li>\n<li>New: CSS support for Required Accessories inline info layout (used by Pro add-on).<\/li>\n<li>Fix: Layout selection not saving (always reverting to Grid) when Pro plugin is active.<\/li>\n<li>Fix: LayoutManager overriding base plugin hooks for non-Pro layouts (list, checkbox).<\/li>\n<li>Fix: Priority select not handling string value \"inline\" correctly.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Fix: Accessory Overview showing stale product names after renaming a product.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>New: Layout sub-settings (autoplay, slides per view, accordion behavior) for optional accessories when Pro is active.<\/li>\n<li>Fix: Undefined variable warning when renaming a product without accessories assigned.<\/li>\n<li>Fix: Typo in footer logo alt attribute.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>New: Complete rewrite with Free\/Pro architecture.<\/li>\n<li>New: Freemium system with granular feature gating.<\/li>\n<li>New: Centralized Settings class with get\/set\/default pattern.<\/li>\n<li>New: Dashboard with quick-stats and quick-action buttons.<\/li>\n<li>New: Feature toggle page with section cards and dependency warnings.<\/li>\n<li>New: Accessory Overview with sortable columns and CSV export.<\/li>\n<li>New: Grid, List and Checkbox (FBT) layout options.<\/li>\n<li>New: Configurable grid columns (2\/3\/4).<\/li>\n<li>New: Drag &amp; Drop sorting for accessories in admin.<\/li>\n<li>New: SKU and price displayed in admin product search dropdowns.<\/li>\n<li>New: Gutenberg Block, REST API, Schema.org Markup as toggleable features.<\/li>\n<li>New: Stock Alerts, Product Preview Modal, Accessory Grouping, Recommended Badge.<\/li>\n<li>New: Bulk Assignment, Inventory Check and Import\/Export tools.<\/li>\n<li>New: Shortcode support <code>[f12-woo-accessories]<\/code>.<\/li>\n<li>New: Category-based accessory assignment.<\/li>\n<li>New: Cart crossselling feature.<\/li>\n<li>New: Template override system.<\/li>\n<li>New: Toast notifications and AJAX save with unsaved-changes warning.<\/li>\n<li>New: Pro feature previews with Pro badges in free version.<\/li>\n<li>New: WordPress 6.7 compatibility (deferred translation loading).<\/li>\n<li>New: WooCommerce HPOS compatibility.<\/li>\n<li>Improved: Modernized codebase with namespaces and autoloader.<\/li>\n<li>Improved: Compact admin panel header with version and quick-links.<\/li>\n<li>Improved: Responsive admin and frontend layouts.<\/li>\n<li>Improved: Accessibility with focus rings, ARIA attributes and keyboard navigation.<\/li>\n<li>Improved: Frontend CSS and admin CSS loaded only where needed.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>Fix: Fixed a bug causing the validation of the license to fail.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>New: Accessories in Cart \u2013 display optional accessories on the cart page.<\/li>\n<li>New: Cart accessories customization (custom title and text).<\/li>\n<li>Fix: Bug fixed hiding the product title in the cart.<\/li>\n<li>Fix: Bug fixed causing the license link not to work.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Fix: Output fixed for Group Products in Product Edit screen.<\/li>\n<li>New: Added option to add custom text for title &amp; description on product detail page.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Fix: Fixed an issue causing a PHP error while selecting Optional Accessories.<\/li>\n<li>New: Changed the main folder to match the free version on the WordPress plugin directory.<\/li>\n<li>Fix: Escaped output content.<\/li>\n<li>New: Optional Accessories are now free to use.<\/li>\n<li>Fix: Removed empty elements from array causing the parent product to be displayed as accessories.<\/li>\n<li>Fix: CSS fixed to properly display the accessories.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Fix: Fixed spelling errors.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>New: Enable\/disable locking of mandatory products in the settings.<\/li>\n<li>New: Required\/optional accessories for product categories.<\/li>\n<li>New: Display assigned group accessories on the product edit page.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fix: CSS issue when optional accessories are disabled.<\/li>\n<li>Fix: Price calculation condition.<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>New: Required accessories.<\/li>\n<li>New: Additional settings to customize accessories.<\/li>\n<li>New: Automatically add required accessories to the cart.<\/li>\n<li>New: Automatically calculate the product price including required products.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>New: Custom title and description for accessories.<\/li>\n<li>New: Global enable\/disable option.<\/li>\n<li>New: Configurable position for accessories.<\/li>\n<li>New: Manually change title tag for accessories.<\/li>\n<li>Improved: Storage changed from serialized to comma-separated IDs.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>New: License &amp; Update functionality.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Add optional accessories to WooCommerce products and categories. Increase your average order value with product accessories, cart crossselling and cat &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/147380","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=147380"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/forge12"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=147380"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=147380"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=147380"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=147380"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=147380"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=147380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}