

A complete WooCommerce product page using the multi-column desktop Grid view.
Build the product gallery your store needs with one Elementor widget.
Kodlo Product Gallery for Elementor replaces the standard WooCommerce product gallery on product pages and in product templates. It brings the controls that are often split across separate gallery widgets into one coherent, responsive gallery that you can shape around each product and breakpoint.
The plugin was created for a practical reason: a clean desktop product grid, a flexible mobile slider, variation-specific media, video, image effects, and loading priorities should work together without forcing you to combine multiple widgets, maintain duplicate responsive layouts, or learn another settings screen.
Kodlo reads the current WooCommerce product on the frontend and provides a product fallback inside the Elementor editor, so the gallery remains visible and configurable while you build the layout.
Build each variation gallery directly inside the familiar WooCommerce Product data panel. Select images through the standard WordPress Media Library, add or remove them, reorder them by drag and drop, or use the accessible ordering controls. The interface follows native WordPress and WooCommerce patterns, with no separate variation-gallery screen to manage.
Variation-specific galleries are commonly placed behind a paid upgrade in product gallery plugins. Kodlo includes this functionality at no cost.
On the storefront, Kodlo supports both complete and partial variation matching. The gallery can respond as soon as a meaningful attribute such as color is selected. Payload fingerprints prevent unnecessary DOM and Swiper rebuilds when the effective visible gallery has not changed, reducing flicker between equivalent variations.
Variation galleries can be enabled or disabled for the widget as a whole, while desktop and mobile views each keep their own maximum image limit.
Kodlo keeps product images in the native WordPress attachment flow, making its output straightforward for standard caching and image-optimization tools to process. Gallery interactions use lightweight Vanilla JavaScript, with jQuery retained only for WooCommerce variation events.
srcset, and sizes attachment data to reserve media space.fetchpriority="high" and decoding="async"; remaining rendered images receive loading="lazy" and decoding="async".:focus-visible styles, descriptive video titles, active-thumbnail state, and hidden-state handling for limited pagination dots.prefers-reduced-motion by disabling gallery transitions and automatic video playback where appropriate.Accessibility depends on the complete page, theme, content, colors, and configuration. Kodlo provides accessibility-focused foundations but does not claim automatic compliance for every implementation.
Select Live Preview on WordPress.org to launch a temporary WordPress Playground site with WooCommerce, Elementor, Kodlo Product Gallery, and a prepared variable product. The preview opens directly on a polished responsive product page built with Elementor, with two variation-specific sets of five purpose-made product photographs plus a video item. Switch between Graphite and Field Sage to see the gallery update, then use Edit with Elementor to change the desktop grid, test desktop, tablet, and mobile modes, inspect thumbnails and navigation, explore zoom and video behavior, and review the styling controls before adding the plugin to a real store.
The preview runs in an isolated disposable browser environment. It does not connect to your production WordPress site, store, customers, orders, or administrator account, and its changes disappear when the Playground session is closed or reset.
Kodlo includes an optional compatibility layer for WooGallery metadata. Activation safely revokes the previous notice generation, preserves any completed or interrupted progress, and checks only the exact wcgs_video and woo_gallery_slider keys on an authorized administrator request. If supported legacy data is available, Kodlo asks whether it should be migrated. Nothing is copied until a WooCommerce administrator explicitly selects Migrate legacy data. The migration freezes a per-key metadata snapshot and immediately processes protected 50-row AJAX batches on the current administration page while a progress notice remains visible. Public product views stay read-only. Every destination write is tied to the exact selected legacy row and shares an internal per-object lock with normal Kodlo metadata saves, so a newer or explicitly empty Kodlo value remains authoritative.
During migration, the notice shows exact processed-row progress and asks the administrator not to reload or leave the page. Failed or repeatedly stalled batches stop automatic requests and expose a Retry button. When both jobs finish, the page automatically loads a completion notice with Keep legacy data as the safest default and Delete safely migrated legacy data as a separate explicit action. Both controls share one native WordPress action row. Safe cleanup uses the same visible protected batch runner, keeps an independent snapshot and cursor for each legacy key, and never crosses the corresponding completed migration boundary. It removes an unchanged legacy row only while its exact Kodlo destination still exists with the migrated value. Unsupported, unmatched, unmigrated, later-created, concurrently changed, or subsequently changed rows remain untouched.
SVG attachments accepted by the standard WordPress and Elementor media workflow are supported like other image attachments, without an additional Kodlo-specific approval layer.
Deactivation stops the widget and its frontend behavior without deleting Elementor widget settings, attachment Video URLs, variation gallery assignments, or migration progress. Reactivating the plugin restores the configured galleries.
Permanent deletion through the WordPress Plugins screen removes Kodlo’s internal migration state, temporary locks, and administrator failure notices. Authored gallery content remains in WordPress post metadata to prevent accidental product-data loss, so reinstalling the plugin can reuse it. Delete that product content separately only when you intentionally no longer need it.
Security Contact: https://kodlo.dev/
Report a suspected vulnerability privately through the Contact button at that address. Please include every affected plugin version you reproduced, WordPress, PHP, WooCommerce, Elementor and browser details, observed and potential impact, reproducible steps, the required user role or capabilities, and a minimal proof of concept.
Do not include passwords, API keys, access tokens, customer data, or other personal data. Redact sensitive values from logs and screenshots. Do not publish exploit details in a support topic before the report can be assessed and coordinated disclosure arranged. Use the public support forum only for non-sensitive support questions.
The packaged SECURITY.md documents supported versions, coordinated disclosure, and an expected initial response within five business days.
Security fixes target the latest published version, so keeping the plugin up to date is recommended.
PHP 8.2 or newer is recommended for production because it remains supported by the PHP project. PHP 8.1 is the plugin’s minimum compatibility requirement, not a recommendation to operate an unsupported PHP branch.
Kodlo Product Gallery for Elementor does not send gallery settings, product data, telemetry, or analytics to Kodlo. Attachment Video URLs and variation gallery image IDs are stored in WordPress post metadata, while Elementor stores the widget configuration in its normal document data.
The optional WooGallery compatibility workflow stores consent, progress, and temporary lock state in WordPress options. It reads only the documented legacy metadata keys and does not copy or delete legacy values without the administrator actions described above.
Permanent plugin deletion removes that operational state and temporary administrator notices. Gallery content stored in attachment and variation post metadata is preserved to prevent accidental product-data loss.
When a visitor starts a YouTube or Vimeo video, the browser loads the corresponding provider player. A direct MP4 URL is requested from the host named in that URL. Those external services may process visitor data under their own policies; site owners are responsible for selecting providers and configuring any required privacy notice or consent mechanism.