This is my most ambitious WordPress site to date. http://www.MomentToShine.com is, at it's core a free form writing contest sponsored by Bank of the Carolinas. The choice to use WP for such a site was an easy one but with many creative minds involved in the brainstorming processes it quickly became a whole new beast. Below I'll describe each aspect of the Moment to Shine web site and the challenges I faced during the development process.
1) Custom Theme - Creating Themes for WP is nothing new. I started with Kubrick for clean file structure and knocked out all the major players: page.php, single.php, sidebar.php, header.php, footer.php, index.php, home.php, archive.php. We also had a few special pages which required custom templates: http://www.momenttoshine.com/share-some-shine/ and http://www.momenttoshine.com/shining-customers/ are two examples.
2) User submitted stories - One of the main reasons I chose WP as the CMS for this project turned out to be one of the most challenging pieces of the puzzle. The initial setup was accomplished using the new roles system. By setting the CONTRIBUTOR role to have access ONLY to submit posts for review, half the work was already done. Then our creative team made two decisions that made things more difficult. A) The story creation tools had to match the look and feel of the site. B) The user needs to be able to select from 19 SHINE icons to attach to their stories upon submission.
CHALLENGE A: Anyone familiar with WP knows that the admin tools have their own look and feel so to meet this objective I had to tweak the code on wp-login.php and wp-admin/post-new.php to adopt all of the design elements of the other client facing pages.
CHALLENGE B: Allowing users to select a SHINE Icon to attach to their stories required adding a new custom meta-box to the wp-admin/edit-form-advanced.php screen and adding a new field to store the icon numbers with each story. While a plug-in approach to this challenge would have been ideal, our timeline was too aggressive and this feature was hardcoded into the core code set (bad practice, I know but it couldn't be helped in this case).
3) Custom Welcome Message - When users register to participate in the writing contest they are presented with a custom "Thank You" screen which was achieved by modifying the "redirect" parameter of the login/register screens. A more robust registration process was achieve through use of the Register-Plus plug-in.
4) Approve / Reject Process with Email Notifications - Again, a plugin came to the rescue for this feature. The Zensor plugin (while still very early in development) turns the approval process into a two step process. It's a little klunky in it's current state but through heavy modifications I was able to give our administrators the ability to Approve and Reject user stories and automatically update the original author via email using custom SHINE branded HTML emails.
5) Custom E-Cards with SHINE Icons - The Custom SHINE eCards (http://www.momenttoshine.com/share-some-shine/) were built into the theme using mostly custom PHP. Of all the pieces of the project, this one is probably the least integrated into WordPress.
6) Share a story with a friend - This functionality comes in the form of a plug-in called WP-Email. If I recall correctly I had to modify the code slightly to allow for SHINE branded HTML emails but for the most part this plug-in matched my needs quite nicely.
7) Voting on Stories - Again, at it's core this web site is a writing contest and rather than have a panel of judges we decided to open voting to the general public. We achieved this with a great plugin called WP-Ratings which I highly recommend for it's customization options, WP integration and ease of use.
So there you have it. A quick and dirty case study to give you all an idea of how I pulled the site off. It's not perfect by any means but it was a very good learning experience.
Thanks for reading.