, , ,

Some ramblings about gallery / porfolio functionality in WordPress…


I’m in the process of redesigning a wordpress website for a small art gallery, using a popular off-the-shelf WordPress theme; Avada. The portfolio functionality provided by the theme is a critical piece of functionality for this client and once of the reasons I selected Avada.

We use the theme’s portfolio items to represent each of the artworks, and we use portfolios to bundle our artworks together in ways (hopefully) meaningful to our audience; to display all artworks presently in stock, to display all artworks belonging to an individual exhibition or to display all artworks having some other aspect in common, such as geographic origin.

The theme is working out really well, by which I mean its saving me a ton of work whilst yielding a great result for my client. It’s amazing how much bang you get for your buck from a theme, both in terms of functionality and presentation. But something about that was bugging me too. I couldn’t quite put my finger on what that was until I came across the
functions.php or plugins? debate. The questions raised in this debate are the kinds of things I’ve been asking myself; questions such as “What happens to my data when I want to abandon my current theme?”

So, after reading more on the matter – such as Konstantin Kovshenin’s About the “Lock in Effect” in WordPress Themes and Plugins and Justin Tadlock’s Why Custom Posts belong in Plugins – I’m of the belief that the preferred architecture for my client would be to move away from the portfolio functionality offered in my theme, and move towards a portfolio delivered as a 3rd-party plugin. In addition to data portability, this approach brings other benefits, that will flow (indirectly) to the client. It lets theme developers focus more on design by delegating the portfolio functionality to a 3rd party, and it lets the portfolio developers focus on “doing one thing well”.

A community standard for portfolio plugins

I agree with Justin Tadlock when he advocates a community standard for portfolio plugins. A handful of portfolio plugins that the community of theme developers can integrate with would be a great thing for data portability in that it would give users “tons of theme choices”. He’s doing his bit to advance this aim by publishing his own portfolio plugin. I thought I’d do mine by sharing what I’ve learnt from my project about what portfolio functionality is important.

My WordPress portfolio plugin requirements

If a plugin has any chance of becoming the plugin of choice in its category for theme developers it has to be flexible, powerful and configurable. I’ve had these attributes in mind as I’ve come up with the following requirements.

The portfolio features I have already

Firstly the plugin would have to include the great portfolio features currently already offered by my theme:

  1. Each portfolio item is its own post (with its own url) that the gallery automatically links to. Maybe it’s personal but I like my portfolio items (artworks) having their own page (rather than just a popup or overlay as seen in many “AJAX portfolios”). I also like the portfolio items being their own post-type in the backend, as opposed to the portfolio and the portfolio items all being part of one custom post type, as seen with plugins like Ubergrid.
  2. The metadata appearing with each portfolio item must be easily customised, because guess what; not everyone using the portfolio functionality wants to display ‘client name’ or ‘project url’ on their website. Fortunately – because each of my portfolio items is represented as its own post type – I can easily attach my own metadata fields to each of my artwork items thanks to wordpress custom-fields and the wonderful plugin that is Advanced Custom Fields.
  3. users can filter the portfolio items in a portfolios
  4. Responsive; a portfolio that only works on desktop is not ok.
  5. Related items carousel in the portfolio items page
  6. multiple grid layouts; 3-col, 3-col with description, etc. thumbnail options (default aspect ratio or custom)
  7. multiple single-post layouts; wide, including a layout for portrait shots. Not everyone uses landscape!
  8. Ability to create multiple portfolios, and the ability to define (through categories) which portfolio items appear in each gallery
  9. lightweight and simple to use.

the portfolio features I wish I had

I’d also expect the plugin to offer the following killer features,which are sadly lacking in most themes and plugins, including Avada.

  1. Combination filters for users (front end) such as those seen in the Isotope or Filtrify js libraries. A single filter is necessary, but not sufficient. I want to let my client’s customers filter the list of artworks by both price-range and style. A designer might want to let visitors filter his or her portfolio by both industry and project-type. A t-shirt company might want to let their users filter by size, colour and availability. None of these scenarios are easy to achieve without combination filters. Clearly, I’m not alone here.
  2. Combination filters in the backend for defining which portfolio items appear in a particular portfolio. For example I may wish to create a gallery (portfolio) that has no user filters but on the backend is filtered to a certain price range and certain region. Combination (dropdown) filters seem to strike a nice balance; powerful functionality without the complexity of a full-blown faceted search engine.
  3. Portfolios which are embeddable anywhere; posts, pages, custom post types. This is the single most annoying thing about the Avada portfolio functionality. It delivers its portfolios through page templates. But I want to attach portfolios too my posts too!
  4. Theme friendly; all styles and functionality should be highly configurable and extensible (through stylesheets, and action/filter hooks).

There’s no shortage of WordPress portfolio plugins out there. Some newer ones look very promising – like the Go Porfolio plugin on Codecanyon – but from my investigations none meet all of my requirements listed above.

When a plugin comes along with the above features it just might have a chance to rise above the other portfolio plugins and become the defacto standard.

I look forward to the day when I can offer my clients not just the above features, but the data portability that comes from a de facto standard plugin. Until then I’ll have to make do with Avada, and the lock-in that comes with that!