This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Easy Photography Portfolio


Building a photography portfolio for WordPress should be easy. Here’s a plugin to help you with that!

Quick Overview

Easy Photography Portfolio is based on the idea of albums with images that can optionally be grouped in categories!
By default, albums and images are displayed in a masonry gallery. You open up an album to see all the images. then click on an image to look at it closer.
I think it might be easier to explain with a demo.

Plugin Demo

Easy Photography Portfolio is extremely flexible, from the most basic to completely custom designs.

📌 Demo: Minimalist Portfolio

Minimalist Portfolio is a free WordPress theme – customized to look great with Easy Photography Portfolio plugin!

📚 Setup Tutorials

The plugin name gave it away – it’s really easy to set up a portfolio with it. And yet, here are some extra resources for you:

🎥 Video Tutorial

If detailed documentation and guides aren’t enough for you, watch the video tutorial:

Designed for Photographers

We love the WordPress community and wholeheartedly agree with the WordPress Philosophy.

Great software should work out of the box, without the user having to adjust oceans of buttons and knobs.
That’s why Photography Portfolio is designed to be as easy to use as possible.

Photography Portfolio plugin is founded upon years of experience in building Premium WordPress Themes for Photographers. We’ve seen it all, great and not-so-great websites, big names, and absolute beginners. We have crystallized the formula of a high-quality portfolio into a simple WordPress plugin that you can use with any WordPress theme or your custom WordPress site!

It all comes down to the simple structure of a real Portfolio book.

You own a Portfolio album for, let’s say your Wedding Photography. If you happen to do street Photography too, you also probably have another album that has only your best street photography prints.

That’s exactly what Photography Portfolio does for you online. You create albums, add images, and in case you have a huge portfolio, you can categorize albums too.

Then your visitors are able to open any album, quickly scan all of the images, or view them one by one. Simplicity is key!

Developed for Extensibility

Out of the box, Photography Portfolio is built using Masonry Layout (think Pinterest). Quite simply – it’s the layout most easily portable to any website layout while keeping the feel of the brand.

Warning: Developer language ahead.
For some, a masonry layout might not be enough, it sure isn’t enough for our Photography WordPress themes, because of that, this plugin is packed with Actions and Filters. Not only in PHP but also the JavaScript side.
You can easily extend the plugin with your own custom archive and single-view layouts. Customization is easy as Photography Portfolio plugin templates are based on get_template_part() function, similar to the way WooCommerce plugin has a custom template function. That brings a lot of customization power to the table. Pick any part of the view, and append your own template bits or completely rewrite the templates.

The JavaScript side is also very opinionated and easily extensible. You can use filters and actions to either modify the existing functionality, for example modifying the core masonry layout just a bit or completely initialize a brand new layout (like Packery or Horizontal Scroll). If you decide to build a custom view, you can utilize the existing JavaScript hook structure to let the plugin handle all the little things for you.


This plugin requires at least PHP 5.4

You can read the full setup guide here or watch the video tutorial

  1. Upload “Photography Portfolio” plugin to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Add a few Portfolio entries in “Portfolio -> New Portfolio Entry”
  4. Make sure your portfolio entries have a thumbnail.
  5. That’s it! Enjoy your Portfolio!



Ask for help in the free forums

How to use the plugin?

It’s quite easy to set up the plugin. Here are a few resources:

There is also a 7 minute video tutorial:

Is this Developer friendly? Any examples?

Everything code-related can be found on GitHub and Github Wiki
If you have questions, you can ask them in Support Forums or in GitHub issues or tweet me @pyronaur


Август 18, 2021-ж.
I tested a lot of portfolio plugins and they look all quite ugly – or you need to pay for boring effects. Photography Portfolio looks great. And it’s very simple to use. If you know how to manage templates, customisation is possible and that’s the kind of feature that makes a great difference. Too bad the documentation is not very noob friendly as the time I’m writing this review. I hope it will be completed.
Февраль 28, 2021-ж.
In my opinion the best and most powerful and at the same time the easiest to use plugin for portfolios that I know. In the last few days I have looked for and tested many alternatives.
Октябрь 30, 2019-ж.
The plugin is not working anymore – WP 5.2.4 Many users report this, but nobody cares.
Апрель 30, 2019-ж.
This is so simple and just works. I have been through several gallery/portfolio plugins that’s just overly complex, but also requires an insane price for the plugin. Thank you for making a FREE plugin that actually works!
Март 5, 2019-ж.
Hello, The plugin is really easy and very nice.. But it conflicts with the Autor link page!! Problem is: Autor page show all Authors not only the Autor page for one. Please advice. Thank you
Read all 30 reviews

Contributors & Developers

“Easy Photography Portfolio” is open source software. The following people have contributed to this plugin.


“Easy Photography Portfolio” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Easy Photography Portfolio” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixed Yoast SEO Compatibility issue
  • Fixed WP Core Hooks compatibility issue


  • This isn’t a significant major release, just a small increment.
  • Fixed escaping issues
  • Updated CMB to version 2.6.0


  • Various minor improvements


  • Fix: Bug which forced archive title & description


  • Updated CMB to version 2.3.0 that fixes a problem in PHP 7.1+


  • Gracefully deactivate plugin if PHP Requirements are not met


  • Add Yoast SEO Compatibility. Go ahead – optimize your portfolio archive SEO! 🎯


  • Fix Video Support
  • Fix first plugin initialization process – automatically create the Portfolio page
  • When creating Portfolio page, call it “Portfolio” instead of “Easy Photography Portfolio”


  • Automatically center Photoswipe Captions
  • Code clean-ups 🚰


  • Fix PhotoSwipe asset name collisions with WooCommerce
  • Update Dashboard UI


  • Fix Single Column spacing in themes that don’t natively support Easy Photography Portfolio


  • New Portfolio Layout: Single Column in Single Portfolio Entries 🏛
  • Clean up a lot of the code 🚿
  • 🔥 Major changes in template loading! From now on tempaltes are loaded through hooks, so you can tap into before AND after ANY template part has been loaded.
  • 🛠 Deprecate quite a few actions because they’re not needed anymore!: phort/wrapper/start, phort/wrapper/end, phort/load_template/{$base}
  • 🛠 Add phort_attach_template() and phort_detach_template() functions to easily attach or remove template files
  • Enable “show_in_rest” for Gutenberg Compatibility!
  • Change PhotoSwipe.js queue handles from phort-photoswipe-* to photoswipe-*


  • As promised, a bug was introduced in 1.3.0 🐞
  • Fixed bug where portfolio would completely break down if pop-up galleries were disabled
  • Fixed bug where Admin JavaScript didn’t load because it didn’t exist
  • No additional bugs introduced in this version 😇


  • It’s finally here! You asked for it, and now it’s here! Drumroll please!
  • 🥁 🥁 🥁 🥁 🥁 🍗 🥁
  • 🎉 Added option to set a single portfolio gallery as your home page!
  • 🎉 Added option to set a portfolio category as your home page!
  • 🎉 Added option to hide gallery captions in post-view while showing them in pop-up galleries!
  • Also, some under-the hood moficiations for the way galleries are handled. Makes it easier to style the plugin
  • Also, fixed bugs 🐛
  • Most probably introduced a bug or two with the new homepage functionality!
  • What do you call a lazy doctor? Dr. Do Little. 👀
  • 🛠 Deprecate phort_entry_data_attribute in favor of phort_entry_data_attributes in /templates/archive/entry.php template


  • Fixed bugs. 🐜


  • Improve custom portfolio query compatiblity
  • Improve default layout styling


  • Code clean-ups 🛁
  • Add new hook phort/layout/init – run before the view genertation has started
  • Make masonry fit the PP_Wrapper from edge to edge


  • Only create “Easy Photography Portfolio” page when “Portfolio” doesn’t exist
  • Add function phort_get_meta()


  • Automatically open the popup gallery based on the URL 🤘
  • Add an alternative pop-up gallery – PhotoSwipe 🖼
  • Add full support for captions and descriptions 🎉 🎉 🎉
  • Rename app[.css|.js} to photography-portfolio[.css|.js]
  • Enqueue libraries separately instead of bundling everyting into libs.js
  • Don’t rely on underscore.js anymore
  • Don’t load jQuery Masonry when it’s not needed
  • Increase gallery z-index to fix popup gallery display poorly coded themes


  • Fix plugin in themes that don’t load jQuery
  • Add password protection support


  • Fix compatibility issue with WooCommerce. Thank you @miraaz for reporting it.


  • Increase the /portfolio/ archive limit from default WP setting to 100


  • Fix lightGallery social sharing issues, for real.
  • Close the whole gallery on ESC key
  • Add options to disable thumbnails or hide them by default
  • CSS Improvements
  • Reorganize settings this much -> 👌
  • Make a few more strings translatable


  • Translations are now working!
  • Trigger phort.lazy.loaded_item after each lazy-loading item has loaded
  • Fix lightGallery social sharing issues
  • Improve inline documentation
  • Better masonry alignment


  • Better default setting management. Defaults are now used by….default. Even before the options object is populated. Yay.
  • Set image height to auto, because as it turns out some themes don’t do that out of the box.
  • Introduce phort_set_defaults, deprecate setting defaults with hooks
  • Refactor a lot of code, hopefully making it easier to read
  • You’re actually reading this. I like you. Here, have a cookie 🍪


  • Show a message with a link to a setup guide when the plugin is activated
  • Add a default portfolio entry if none already exist
  • Add a default portfolio page and automatically set it up in the settings
  • Add a settings link in plugins page
  • Update Tested up to tag


  • Add option to disable the popup gallery
  • Add WPML Compitability ( thanks to @vukvukovich from WPML )
  • Update CMB2


  • Make sure images have 100% max width, some themes don’t do that by default
  • Add actions for to make it easier to tap into the templates: phort/{archive|gallery}/loop/{start|end}


  • Make sure all top level template wrappers utilize phort_class()
  • More elaborate plugin settings with dropdowns instead of checkboxes
  • Add permalink class .PP_Entry__permalink


  • Always make sure an image exists before trying to display it


  • Add function phort_is_front_page()
  • Add play button overlay on videos
  • Validate layouts before returning phort_slug_current() value


  • Correctly set-up postdata in single portfolio layouts
  • Revolutionary new UI when creating a new portfolio entry ( fixed subtitle alignment )
  • Hide layout setting dropdowns if there are no layouts to choose from.
  • Clarify code and comments
  • By default load 100 portfolio entries. If you need more, you’re responsible for displaying them properly. Why would you need a portfolio with more than 100 albums ?
  • Remove filter phort/get_template.
  • Introduce filter phort/get_template/{$base}
  • Allow themes/plugins to modify EPP Defaults


  • Fix broken portfolio links
  • Improve JavaScript hooks
  • Other minor improvements


  • First Release!