This tutorial series will walk you through the process of creating image galleries that registered users are able to submit their own images to. The system that I’m going to show you how to build is extremely useful for photography sites, digital graphic/art sites, and more.
This entire series will be based off of the work I did for the CG Cookie Gallery System.
By the end of the series, we will have created a plugin that can do the following:
- Display a paginated gallery of all images submitted on the site
- Allow users to submit images directly to the gallery
- Filter the gallery images by categories and tags
- Require that images be approved before publication
- Email notifications for new image submissions
- Allow users to comment on other user’s images
- View image portfolios of any user
The tutorials in this series will all be restricted to premium subscribers only. If you’re not a member, then register here and get immediate access!
- User Submitting Gallery Images - Part 1
- User Submitted Gallery Images - Part 2
- User Submitted Image Gallery - Part 3
- User Submitted Image Gallery - Part 4
- User Submitted Image Gallery - Part 5
- User Submitted Image Gallery - Part 6
- User Submitted Image Gallery - Part 7
- User Submitted Image Gallery - Part 8
- User Submitted Image Gallery - Final Overview

Could this be modified to allow visitors who are NOT registered to submit photos to that particular page’s gallery?
That would be insanely useful for sites who want to make user submissions as frictionless as possible. If you want to crowdsource photos from casual visitors, requiring them to register is a huge barrier. The Holy Grail would be a simple multi-image uploader that allowed ANYONE to put their photos in the approval queue for that particular page’s gallery, in much the same that WordPress already allows unregistered users to leave comments – can you imagine the extent to which the number of blog comments would be reduced if you had to create an account every time you felt like sharing your thoughts on some random blog?
WebDevStudios created a handy free plugin called NextGen Public Uploader which did this in tandem with the NextGen Gallery plugin but, sadly, they abandoned it before adding a couple of small but essential features. I reckon it could have been a very popular premium plugin, especially with the rise and rise of decent cameras in smartphones, matched by the increase in people seeking visual content, driven largely by the increase in tablets and smartphones. A simple plugin allowing public image uploads would spark a whole new genre of WordPress websites.
Those are great ideas.
I really love the idea of public images. The system could allow anyone to submit images, but would permit registered users to keep a portfolio of images. It will be a little bit complex, simply because the images will be created with custom post types and will require an author, but that shouldn’t be too difficult to work around.
I’m glad you can see the potential, Pippin
Personally, I don’t think that allowing registered users to keep a portfolio of images is all that important – sure, it might be a nice extra feature, but the reality is that very few small sites can hope for users to decide to make them their “home” for images, they’ve got big, established sites such as Flickr, DeviantArt and Picasa for that. Realistically, what a small site owner would be hoping for would be “drive-by” image submissions by users who stumble across that page’s gallery and momentarily feel the urge to add their own images to it.
A typical use case might be a site about local businesses and, on a page for a certain restaurant, customers could upload snaps they took of their meals. They will probably never return to that particular page but they will briefly enjoy the opportunity to share their experience and other visitors will find it interesting to see what the meals at that particular restaurant look like.
A much more important feature, one requested repeatedly on the WebDevStudios forum before it was abandoned, is the ability for users to submit their name, email and website address alongside their images (again, just like comments) because giving people credit for their contributions is important and, of course, you need to know who uploaded what if you want to run competitions.
If that ancillary info is saved to certain standard gallery fields, it would be easy enough to set up your chosen slider or lightbox to pull that info from the WordPress gallery or NextGen Gallery in order to display it and include a link.
Even more important, to avoid the devastating cost of legal action, there should be a tick-box so that the uploader can confirm that they give permission for their image to be published on the site and that they, themselves, have the right to give such permission. Uploaders can obviously lie but the fact that your upload process seeks confirmation is proof of good faith and absolves the site owner of liability under Safe Harbor provisions.
Would it really be necessary to use custom post types? It strikes me that, if possible, it would be more streamlined to throw them straight into the native WordPress galleries and the added advantage of that approach is that hundreds of image display plugins are already designed to pull from WordPress galleries.
Anyway, I hope it is something you will consider creating – I am convinced that this is one of those rare plugin ideas that would not just be useful to a broad range of sites, I believe it would also make possible a whole new genre of “User Generated Content” sites, covering every niche subject under the sun. I am genuinely surprised that this doesn’t already exist but the closet I could find was the Uploadify Integration plugin and that is a long way from being generally useable.
Donnacha, some good news!
According to the WP plugin repository, theNextGen Public Uploader got a fresh coat of paint. I don’t need an elaborate gallery, but I do need a a solid visitor image upload / crop / preview / submit plugin. So I’ll be checking it out and following the discussion here .
Ron
Man, awesome insight dude.
As mentioned in the intro, the idea for this series came from a plugin I built for the CG Cookie network, and so the majority of the features and such that I’ve planned to include come from there as well.
Things like the “You have the right to upload this image” tick box and saving submitter info are all on the table already, and will be in the final plugin.
When building the original plugin, I debated whether you use the default WP media system or a custom post type. I decided on a post type because of the need to store author information and such. It also provided a really simple way to create a moderated gallery, where all image submissions have to be approved before they are published to the gallery. This is more difficult to do when not using a custom post type.
The plugin that I’m building in this series, which is essentially an improved / more generic version of the one running on cgcookie.com, is going to be made available at the end as a complete plugin. I also plan to improve upon it further, and release the enhanced version as well.
The CG Cookie site looks great, I joined in order to look at your upload system, really good stuff, the only improvement I can think of would be multiple-at-once selection of uploads.
Do you envisage the final version in this series being capable of public uploads?
I’m guessing that it would be difficult to create any sort of custom post type without a logged-in user but, then again, I’ve noticed that Gravity Forms’ CPT feature allows you to assign a default post author to whom all posts created by the form are assigned, so, I guess there are roundabout ways to do it.
Yes, I’m going to incorporate the guest submissions. At this time, I’m thinking of the plugin creating a default “guest” user that all non-logged-in uploads will be assigned to.
Great, I have signed up to a premium membership and look forward to learning a lot from you, thanks for answering my many questions
Awesome. I really appreciate the subscription, and even more then in-depth opinions / feedback.
Dialogue witnessed as above is about as good as it gets. Thanks to both of you for that, and to you once again Pippin for this vehicle and your plugins.
Multi-upload would be a great addition. Thanks for the Tutorials!
Thanks!!
Thanks for saihrng. Your post is a useful contribution.
for quick and dirty image upload by unregistered members, you can probably use gravity forms + the custom post types plugin for GF.
there’s also a plugin for nextgen gallery that allows that.
Hey Pippin,
A great feature to build into this series would be a public voting system. I suppose you could just use your “love it” plugin to do this, but I think it could go one step further and check source IP so duplicate votes are not counted.
The “Love It” plugin already checks for duplicate votes, at least when logged in
I’m going to enhance the “Love It” plugin to allow non-logged-in users to vote as well, and then I will track IPs.
Hi Pippin! Is something wrong with registration? I really would like to register for a paid membership but I’nt able to do it.
What is happening when you try? Does it give an error of any kind?
Strange. It just worked!
K, thanks for letting me know!