Choosing a WordPress Photography Theme
A photography theme has one job: deliver large images fast and without mangling them. Most fail on the same three points — the crop, the compression, and where the gallery data lives.
A photography theme is an image delivery system with a layout attached. Judge it on delivery. Grids, animations and full-bleed heroes are easy to change later; how the theme crops, compresses and serves your work is not, and it is what decides whether the site represents you honestly.
Three failures account for almost every disappointing photography site.
Cropping is the first thing to check
Themes are designed around a grid, and grids want consistent aspect ratios. Your work is not consistent. A theme that hard-crops every thumbnail to 4:3 will decapitate every portrait-orientation frame you have.
On the theme's demo, before anything else:
- Find a portrait image in a grid. Is it cropped to landscape, letterboxed, or shown at its own ratio?
- Check whether the crop is centred or smart. A centred crop on a composition with the subject at the edge destroys it.
- Check the single-image view: is the full frame shown, or is it also cropped to fit a container?
- Look at a mixed gallery. Themes that look superb with uniform demo images fall apart with real, varied work.
If the theme only offers hard crops, you are committing to shooting for its grid. That is a legitimate choice for some photographers and unacceptable for most. WordPress's own cropping behaviour is covered in WooCommerce product image size for the store case, and the same registered-size mechanics apply to themes.
Fidelity, compression and colour
WordPress re-encodes uploaded JPEGs at a default quality. For most sites that is invisible. For photography it is the difference between a clean gradient and a banded sky.
add_filter('jpeg_quality', fn (): int => 92);
add_filter('wp_editor_set_quality', fn (): int => 92);
Put that in a small site-specific plugin, not the theme, so it survives a theme change. Raising the number raises file size — measure both.
Colour is the second half. Export as sRGB with the profile embedded. A file in Adobe RGB or ProPhoto will render dull and shifted in browsers, and no theme setting fixes that. If images look right in Lightroom and wrong on the site, this is nearly always why.
Then check what the theme and any optimisation plugin do afterwards. A plugin that strips metadata to save bytes will strip the colour profile with it. The general trade-offs are in how to optimise images in WordPress.
Where the galleries live
The lock-in question, and the one photographers hit hardest because a gallery represents hours of curation.
A theme that registers its own gallery or portfolio post type owns that content. Switch themes and the posts remain in the database with no admin screen, no URL and no way to display them — the mechanism is explained in custom post types explained. Everything you built is technically present and practically gone.
Safer arrangements, in order of preference:
- Core gallery blocks in ordinary pages and posts.
- A gallery plugin with its own post type, so the galleries survive theme changes.
- A theme post type, accepted knowingly, on a site you do not expect to re-theme.
The wider version of this test is in how to judge a WordPress theme: build one representative page, switch to a default theme, and look at what is left.
Performance, which matters more here than anywhere
A photography site is the heaviest kind of WordPress site by construction. What to verify:
- Responsive images. The theme should emit
srcsetso phones get phone-sized files. A theme that serves one large file to everything is disqualified. - Modern formats with a fallback, so browsers that support them get smaller files.
- Lazy loading everywhere except the hero. The first large image is almost always the largest contentful paint; lazy-loading it makes the page measurably slower.
- Reserved space for every image, or the page reflows as it loads — cumulative layout shift.
- A CDN, because large files from a single origin is the exact case CDNs solve.
Measure a real gallery page, not the home page. The method is in how to speed up a WordPress site.
Lightbox and navigation
Small details that decide whether the site is pleasant to browse:
- Keyboard navigation: arrow keys move between images,
Esccloses. - Swipe on touch, without hijacking the page scroll.
- The lightbox loads a larger file than the thumbnail — some themes just scale the thumbnail up.
- Caption and title display, if your work needs them.
- The lightbox does not trap focus for keyboard users with no way out.
Client proofing is a separate product
If you deliver galleries to clients, that is not a theme feature. It needs private galleries, per-client access, selection and download — either a dedicated proofing plugin or an external service you link to. Building it out of password-protected pages works for a handful of clients and stops scaling immediately. If you sell prints, that is WooCommerce, and image delivery for products is a different problem again.
What to actually do
Shortlist on cropping behaviour alone — it eliminates most candidates in five minutes. Then install the survivors on a staging copy, upload your own images in your own mix of orientations, and look at them on a phone and on the best screen you own.
Check four things before committing: portrait work is not mutilated, colour matches your export, a gallery page loads acceptably on a phone, and deactivating the theme leaves your galleries intact. A theme that passes those is a good photography theme, whatever its demo looked like.
Frequently asked
- Two usual causes. WordPress re-encodes uploads at a default JPEG quality, and images without an embedded sRGB profile shift colour in browsers. Export as sRGB and raise or disable the re-encoding quality filter.
- A plugin, or the core gallery block. A theme that registers its own gallery post type takes your galleries with it when you switch themes — the rows stay in the database with no admin screen and no URL.
- Large enough for the biggest size the theme displays on a high-density screen, and no larger. Uploading 6000px files so WordPress can generate a 1600px version wastes storage and slows every regeneration.