Every release. One page
Brick by Brick
FotoGrids now works in Bricks! Drop in a gallery or album and see it live as you design
Library checks for duplicate names and valid coordinates, and Edit Item shows a location's coordinates
Password-protected and members-only galleries stay out of the render cache, page caches and public REST responses
Albums, Recently Edited and Statistics show each person only the galleries they may see
Assigning a gallery to an album needs edit rights on both, and only Library managers can change tags, people and locations
Statistics count views and shares only for galleries, albums and items that exist
Fixed multi-choice settings such as Lightbox info blocks and share networks, and repaired galleries saved with one value
Fixed share statistics for every network, the view-page footer and the Track share clicks setting
Fixed view counting to one view per visit, and daily statistics now follow the retention period
Fixed private galleries and albums to show as normal view pages for users who can read them
Fixed Google Fonts, the loading icon and the back-to-album link on cached galleries
Fixed paging and the Lightbox in unlocked password galleries that don't remember the visitor
Fixed Lightbox navigation, and the info panel on images with no credit tag
Fixed access for authors and editors to the Galleries and Albums lists and to galleries they published
Fixed Library access to follow the Permissions Manager, with a clearer description of what it covers
Fixed Publish and Update while an autosave is running, and the leave-page prompt on new galleries
Fixed the items grid and Library stats to refresh after edits, and item titles with & or quotes
Fixed album order when galleries are added one after another
Fixed page builder previews with the same gallery placed twice
Fixed the System Info Error Log tab with debug logging on
Fixed uninstall cleanup when FotoGrids is deleted with WP-CLI or a script
Steadier, Smoother, Sharper
Recently Edited on the Dashboard once setup is complete
Untitled galleries and albums now show as "Gallery #123" and "Album #123"
Tag, people and location suggestions now search as you type
Unsaved changes in Edit Item are now confirmed in the FotoGrids dialog
The gallery Preview tab now guides you when a gallery is empty
Admin screens stay usable if a single control fails
Custom image sizes now follow saved gallery settings only
Fixed Responsiveness breakpoints and detection mode across every layout
Fixed deep links, which now work whenever Deep linking is on
Fixed starring a video as the gallery's featured item and cover
Fixed statistics for album views, Lightbox slides, site timezone and tied rankings
Fixed Statistics charts on narrow screens
Fixed the dashboard widget counts to match the FotoGrids Dashboard
Fixed REST requests and the watermark status on plain permalinks
Fixed Dashboard uploads
Fixed the Page Buttons arrow icon
Fixed removing video embeds and setting the featured item in the items grid
Fixed item details shared across galleries and for migrated galleries
Fixed duplicate tags when re-adding one in different case
Fixed settings screens to follow your profile language
Fixed translations for the Dashboard, share bar and Lightbox
Fixed the System Info error log to list only FotoGrids errors
Fixed gallery reorder and settings-saved actions for developers
Lightbox image sizes, saved defaults and share buttons fixed, and an admin that reads right to left.
Right-to-left support in the admin
Every FotoGrids admin screen now mirrors correctly in Hebrew, Arabic and other RTL languages.
Stricter view permissions
Every restricted view setting now requires at least a logged-in user.
Encrypted default password
A password saved in Settings > Defaults is now stored encrypted.
Fixed Lightbox image size selection
The Lightbox now serves the size you set, and a lighter version on phones.
Fixed saved defaults for new collections
New galleries and albums now start with the defaults you saved.
Fixed LinkedIn, WhatsApp, Telegram and Reddit share buttons
They now open a share window and count in statistics.
Fixed the Zoom Trigger setting
Your chosen trigger now applies in the Lightbox.
Fixed saving for three gallery settings
Mini Lightbox padding, Preload Next Page and Show Album Name on Button.
Fixed Regenerate All
Tools > Regenerate Thumbnails now processes every listed image.
Improved the SEO checkup title check
Titles copied from camera filenames such as DSC_1234 are now flagged.
Fixed cache expiry with Redis and Memcached
Cached galleries now respect their cache duration.
More complete uninstall
Saved templates and review-prompt data are now removed too.
Autosave, alt text and video playback fixed, and every EXIF field your camera records.
Every EXIF field your camera records
FotoGrids used to read four – camera, aperture, shutter speed, ISO – through a WordPress helper that carries no lens, flash, white balance, metering or GPS at all. Tags now come from the file directly, through a 22-field registry shared by the settings panel, the item editor and the lightbox. The Exif tab's four checkboxes become one sortable list, and that order is the order the lightbox renders them.
The settings vocabulary is now translatable
759 of the 853 strings in the gallery and album settings panel were missing from the translation template, because they live in JSON the string extractor never read. The whole vocabulary is now extracted and translated server-side.
Importing now asks before it discards edits
From Folder, From ZIP and Video Embed threw a part-filled form away on any exit, with nothing recoverable. Each now asks first.
The render cache cleans up after itself
Expired rows were filtered out on read but never deleted, so the table grew without bound; a daily purge now runs. Deactivating or uninstalling also clears FotoGrids' scheduled events, which it previously left behind.
The admin payload no longer carries the user's account record
The whole WP_User object was being passed to wp_localize_script, putting the current user's account record into the page source of every FotoGrids admin screen. Nothing read it, so it is removed, with a build guard and an end-to-end test against a recurrence.
Three REST routes now check who is asking
GET /lightbox/item/{id} served any attachment's metadata to anyone, and POST /gallery/lightbox/slides checked only that a gallery was published – so slide data for password-protected and registered-users-only galleries was public. All three are now authorised at the route level.
Autosave is applied in settings
The editor read the setting from three places that do not exist, so it never saw what you had chosen, and switching it off did not stick. The toggle and the editor now read and write one source, and the setting applies.
Saving Gallery Defaults turned off other settings
One click on Save Defaults cleared autosave, Google Fonts, usage-data sharing and the general, permission and integration settings – the form posted to a WordPress settings group that owns seven options while carrying a field for one, and WordPress writes every option in a posted group. Defaults now saves over REST.
Video playback settings were not affecting the player
Autoplay, mute, loop and controls never reached it, and autoplay was forced on regardless of the toggle.
Alt text now uses the WordPress alt field
FotoGrids kept its own copy, seeded once when an item was first added to a gallery and never refreshed, while the lightbox and the collection renderer read WordPress' – so an alt edit updated the grid while the front end served the old text indefinitely. There is one alt field now, WordPress', everywhere.
Editing an item didn't refresh the cached gallery
The cache listened for an event nothing fires, so logged-out visitors kept the pre-edit render until it expired.
Uninstall left data behind
Gallery, album and embed posts, and four meta keys on attachments. The cleanup queries also passed _ to SQL LIKE unescaped, where it matches any single character.
Gallery addresses you choose, folder and ZIP imports, and a caching fix.
Editable gallery and album addresses
View pages were fixed at /fotogrids/gallery/{slug} and /fotogrids/album/{slug}, changeable only through a filter. Settings → View Pages now takes an editable prefix and one segment per collection type, each with a live preview. Any of the three may be empty, so example.com/{slug} is reachable. The base is validated on save against existing pages and posts, the rewrite slugs of other post types and taxonomies, and the roots WordPress reserves; a collision is rejected with the conflicting owner named rather than saved. Addresses built on a previous base, or ending in a collection ID, redirect to the current permalink.
Add items from a folder or a ZIP
The Add New menu's From Folder and From ZIP entries now work. From Folder browses the uploads directory on the server with breadcrumbs, sub-folder image counts and per-file selection; images already in the Media Library are reused and the rest are registered where they sit, so nothing on disk is copied, moved or deleted. From my computer uploads a whole folder from your machine, and From ZIP imports the images out of an archive.
Per-item SEO checkup
The item editor's SEO tab held four Pro cards and an upgrade button while every field search engines read sat one tab away in Free. It now runs seven checks against the item — alt text, filename, title, caption, description, credit and file weight — grades it Bad, Needs improvement or Good, and gives every failing row a Fix link that switches to the field and focuses it. The Pro badge is gone.
Statistics follows the period filter
Views and Interactions report the selected 7, 30 or 90 days rather than all time, each with a percentage change against the preceding window of equal length; the lifetime figure moves to a footnote, shown only when it differs. Top content tables are sortable, and the donut palette ranks by value.
Choosing a template during setup creates the gallery
The setup wizard's Choose a template card led to the Templates page, whose only action is Apply — and Apply needs a gallery a first-time user does not have. The card now opens the page in a mode where every template reads Use this template and creates the gallery for you.
Freemius SDK updated to 2.13.4
Payment history renders for currencies outside USD, GBP and EUR instead of erroring, and shows the currency you were charged in. Checkout no longer lets query parameters override the checkout context, and a slow licensing call blocks a request for 30 seconds rather than 60.
Frontend URL handling hardened
JavaScript that ships to visitors now validates URLs at the DOM sinks it writes to rather than relying only on the server having escaped them, so the guarantee holds if a filter, page builder or template edit sits downstream.
Build toolchain advisories cleared
Six high-severity advisories in development tooling are resolved. The shipped output is unchanged.
Galleries lost their layout for logged-out visitors
A cached gallery replayed its HTML without the inline custom properties it was built with, so –fg-cols was missing and the grid collapsed to a single column. Editors never saw it, because the cache is bypassed for anyone who can manage galleries. Galleries cached before this release re-render rather than replaying.
Random sorting was frozen by caching
A seeded order was chosen while the page was built, and every cache in front of it stored that one order — so random galleries were identical on every visit.
The offline template set listed 46 templates that could not be applied
When the remote catalogue is unreachable and nothing is cached, the bundled fallback served 46 Pro entries carrying no settings and no thumbnail, which rendered as grey placeholder cards that applied nothing. The bundled set is now 23 gallery and 5 album templates, all with real settings. The Pro upsell is unaffected — it comes from the remote catalogue, not from disk.
Every chart in wp-admin was blank
Library, Statistics and the dashboard widgets all failed to render because the vendored Chart.js bundle threw on load. Rebuilt, and updated to 4.5.1.
The Featured Item layout's Show all images button did nothing when clicked
The button rendered correctly but its click handler never fired.
Missing EXIF fixed, faster uploads, and a System Info tool.
System Info tool
Tools → System Info reports your WordPress, server, database and media environment alongside FotoGrids' own state, ready to copy or download into a support ticket. A second tab lists PHP and browser errors raised by FotoGrids code, plus a read-only tail of the WordPress debug log.
Media tab in the item editor
Every image size WordPress generated for an item, with preview, dimensions, file size and origin, and copy-URL actions. Sizes that were never produced are flagged as Not generated, File missing or Source too small, and link straight to Regenerate Thumbnails.
News & Updates feed and a What's New panel
On the dashboard and in the header. Both can be turned off under Settings → Advanced.
Gallery uploads are much faster
The uploader now uses WordPress' own media uploader. A batch uploads in parallel instead of one file at a time, your site's mime and file-size validation comes with it, and one failure no longer strands the rest of the batch.
Verified against WordPress 7.1
Including its client-side media processing.
Permissions Manager rewritten
It now lists what FotoGrids actually gates, in plain language: tools named rather than shown as capability slugs, and the 26 capabilities WordPress derives from the post types collapsed into four readable rows per collection type. Existing role grants are unchanged.
Statistics remembers the period you picked
The selected range lives in the URL, so a reload or a shared link opens on the same view. "Recent Activity" is now "Recently Viewed", which is what the table always showed.
Import / Export log reads at a glance
Coloured Export and Import pills, one chip per data type, and styled status pills.
Debug Log panel
It always renders now, reports WP_DEBUG and WP_DEBUG_LOG as status lights, and names each channel's FOTOGRIDS_DEBUG_* constant on its row.
Admin fonts down from 748 KB to 241 KB
Poppins as woff2, with JetBrains Mono bundled for monospace surfaces. Both served from your own site.
Tooltips on the link / unlink and device toggles
In collection settings, opening on focus as well as on hover.
The translation template now carries all 1,741 strings
It previously shipped empty.
Direct SQL hardened
Table names interpolated into queries are now prepared or quoted, and WordPress Plugin Check runs on every change before it lands.
EXIF and XMP data missing from large photos
Both were read from the -scaled copy WordPress creates for images over the big-image threshold, and WordPress strips metadata when it makes that file. Camera, lens, aperture, shutter and ISO came back empty for essentially every modern camera photo, and the XMP credit packet with them. Both now read from the preserved original.
Watermark generation running before any image sizes existed
Surfaced by WordPress 7.1's client-side media processing.
An Add-Ons link and empty submenu on the plugins screen
For add-ons that do not exist — along with a Freemius Opt In link that could put your usage-data choice out of step with Settings → Advanced.
Three "Complete Your Setup" steps that could never be ticked
They can now, and the progress bar reaches 100%.
The video embed modal losing per-source drafts
The upgrade modal opening without a close button
The drag placeholder label sitting off-centre
Extra-small buttons rendering at full height
Featured / Share Image metabox alignment
Blank rows for untitled galleries
FotoGrids 1.0 — the first public release.
Eight gallery layouts
Grid, Masonry, Justified, Slider, Image Viewer, Single Item, Featured Item, and Instant Photos.
Video in the gallery
Media Library video files plus YouTube and Vimeo embeds, in the grid and in the Lightbox.
Unlimited albums
Group galleries the way the work is already organised.
Templates
Ready-made ones to start from, and your own layouts saved for reuse.
Immersive Lightbox
Keyboard navigation, autoplay, swipe gestures, and social sharing.
Sorting, on-page filtering, and EXIF details
Order the items, let visitors narrow them down, show the capture data.
Text watermarking and password protection
Mark the images, or put the whole gallery behind a password.
Page builder widgets
Elementor and Divi.
View and share statistics
Which galleries get opened, and which get passed on.
Gutenberg blocks and shortcodes
For everywhere the builders don't reach.
Drag-and-drop reordering
Arrange a gallery by dragging the items into place.
Item details
Captions, descriptions, tags, people, and location.
Lazy loading and pagination
A long gallery stays quick on a phone.
Server-side rendered, SEO-friendly markup
The images are in the HTML, so crawlers see them.
React admin interface and REST API
The whole plugin runs on its own REST API.