4lifephoto.co.uk / 4lifegallery.co.uk


4lifephoto is a company that specialise in event and portraiture photography selling prints at events or by post. Their online presence includes a website based on WordPress, Facebook and Twitter pages. Photography galleries can be seen by customers who then selected their photos and ordered over the phone. The company wished to expand their online capabilities by adding an e-commerce section to their website, whereby customers can select and pay for their photographs all online.


  • Add an e-commerce section to the website, whereby customers can select photographs, photograph sizes and pay for them.
  • Add an administration section to the WordPress backend, where photos can be uploaded and orders can be seen.
  • Utilise the existing WordPress system currently in use.
  • Utilise the sagePay payment method.
  • Send automated emails to customers as their receipt.
  • e-commerce additions incur minimal change to the main 4lifephoto website.

Requirements Discussion

At the time this project became available, WordPress was seen as a blogging platform, not as a whole website design system, therefore research was performed for a solution for photography e-commerce.

Due to the plugin nature of WordPress complex websites with different applications, from e-commerce to blogging can all utilise the same WordPress system. Therefore an e-commerce solution specific for photography was needed, and a couple were found.

NextGen gallery
A simple solution was discovered using the Next-gen gallery plugin to upload and store the galleries and an extension to perform the e-commerce. However, this solution did not include other requirements such as the order and payment system, therefore this solution was rejected fairly quickly.

Another option was to extend a very popular e-commerce plugin solution used on WordPress websites, called Woocommerce. A extension was in development for this plugin specific for photography therefore the plugin authors were contacted to define a time-frame for completion of this. Unfortunately, no time-frame could be given because this solution was a sideline project due to demand. Therefore this option was also rejected.

Image Store
Another option was to use a plugin developed by xpark media called image store. Many of the requirements of 4lifephoto e-commerce solution were solved with this plugin:

  • Uses the version of WordPress installed on the 4lifephoto server.
  • Adds full e-commerce solution for photography including photo selection, size selection and a cart implementation like that seen on many e-commerce websites.
  • Complete administrative backend including photo upload, order management and email notification.
  • Galleries for customers added as custom posts which are invisible and therefore only require a link to navigate to them – solving the minimal change to existing website.

The only requirement not satisfied was the sagePay payment method, which would require implementation.

Due to the completeness of the image store plugin, this option was therefore chosen. At the time the project began, the current version of image store was 3.2.7.

Version 3.2.7

The first iteration of the image store modified for 4lifephoto was based on version 3.2.7. The following changes were implemented so that the sagePay payment method could be used with the store. As still new to WordPress development, the original source code was modified. The full list of changes is described in this document.

changes to image store version 3.2.7

As the original source code for the image store was changed there became the inability to update the plugin to future releases.

The image store plugin author was contacted to ask whether the sagePay payment method could be integrated into the original source code therefore updates could be applied to the version running on 4lifephoto. The author obliged and now the sagePay payment method is now fully supported in the plugin, with myself stated as the author of the sagePay payment method source files. The author also released an extension template whereby the functionality of the image store could be extended without changing the existing source code.

All modifications that were originally implemented in version 3.2.7 were transferred to the image store extension. At this time I was contacted by 4lifephoto to apply further functionality to the image store. At the time the extension was implemented the current version of image store was 3.4.2.

Version 3.4.2

Website migration

4lifephoto described that they were migrating to a Drupal content management system as their parent company also used this. The website would be redesigned to look similar to the parent company. There was discussion about migrating the store to Drupal. Unfortunately, this could not be achieved as the store had been used for well over a year and many galleries had been implemented.

Therefore it was decided that the WordPress website would remain, under the new name of 4lifegallery and the original 4lifephoto website would simply link to this.

It was suggested that we implement a jframe on 4lifephoto to show a viewable section of 4lifegallery without having to redirect the customer. This solution worked great on desktop computers, but with the rise of mobile devices including mobile phones and tablets jframes unfortunately do not function as intended therefore in the end the “link to 4lifegallery” option had to be chosen.

4lifegallery was redesigned to take on the new look of 4lifephoto.

Compact disc and download functionality

4lifephoto suggested adding a compact disc to the list of options that a customer can purchase on the store. There are a couple of problems to overcome in this situation, including:

  • The customer must not be able to add more than one of the same image to a CD.
  • The customer must be notified when they try to do the above.
  • The cart should update correctly when the CD is applied.

The solution was written in the image store extension therefore could be applied without changing the original source code.

Download functionality was also requested by 4lifephoto, however during discussions with the image store plugin author it was noted that this was in development. Therefore the decision was made in both parties to delay this option until it is released.


This was a large project whereby WordPress was learned very quickly in its form and functionality. Not only WordPress, this extends to the many programming languages used to create such websites. I would like to thank Paul Bartley, Pauline Earnshaw and Chris Davison at 4lifephoto for this fantastic opportunity, stressful at times, but so rewarding.

Posted in Websites