1. WordPress Meetup Show Your Site Notes on http://oakleychamber.com
Development Environment
VMware (http://www.vmware.com/) running several LAMP server instances for 1) development, 2)
development testing, 3) production testing. Other virtualization solutions will work as well but VMware is
preferred because of the industry support, reliability and high performance.
Ubuntu 12.04 LTS Server (http://www.ubuntu.com/download/server) which is used as the basis for the
virtualized LAMP servers. Basic installation with SSH, Apache2, MySQL, PHP, etc. and then extended
with Webmin (http://www.webmin.com/) and Virtualmin (http://www.webmin.com/virtualmin.html) as well
as VSFTPd (https://security.appspot.com/vsftpd.html).
Most importantly, the development and development testing servers have Xdebug (http://xdebug.org)
installed (and configuration files to turn Xdebug and profiling support on and off). Serious developers who
are forced to use PHP should *never* be without Xdebug and *should* run frequent profiling tests on their
code to track down areas that can be optimized or are otherwise causing problems.
The other must-have tools are JetBrains’ PHPStorm (http://www.jetbrains.com/phpstorm/) which is the
best money you’ll ever spend if you wish to whip your PHP mess into shape.
The Goal of the Website
Most Chamber Websites provide very little value to their members. The so-called business listings on
their site are nothing more than mostly blank pages with just the business name and address. If you’re
lucky you get a few more lines of content. Visually these “listings” are worthless. For SEO purposes those
“listings” are even more worthless.
The original idea was to just overhaul the current Oakley Chamber website and have a business listings
plugin that would provide the list of members. But after looking at many chamber sites and the abysmal
state they are in around the country I decided we could do better than that and set out to create
something that is of *real* value to members. This is how the idea of the “member profile pages” got
started and kept getting extended and enhanced as development was taking place.
The secondary (but equally important) goal was to provide kick-ass SEO value to our members. I know a
thing or two about SEO stuff but decided to do all the “magic” at an even better level by seamlessly
integrating “structured content” (http://eastbaywp.com/2012/03/links-structured-content/). And by that I
mean integration of microformats, microdata, rich snippets, etc.
A personal goal that I set out on was to show all the other chambers how their websites are unable to
compete if you have a crazy developer in your region creating a site like this and scoring all the best
results in search engines, thereby encouraging members of nearby chambers to join ours because we
provide them some very specific additional value for their money. :-)
The main plan for the member pages, events, past event write-ups, jobs, deals, etc. was to seamlessly
integrate all these different portions of content to mix in with each other. For example, a member profile
page would contain a section on the upcoming events, the past events the member has hosted or has
been involved in, their current specials and deals, pictures and brochures (PDF files), etc. This has been
accomplished by using the Post 2 Post plugin and relatively minor (yet because of the number of cross
references in the content being rendered, a lot!) of custom code to get the correct content from the DB
under the various different circumstances. The same Post 2 Post features have been used to create
associations between members and events, board members and member businesses, and about 12
other relational aspects of the content.
2. Oakley Chamber WordPress Specifics
Used the Genesis Framework (http://www.studiopress.com/) and a slightly (visually) modified News
theme.
Developed a plugin (to separate logic from the adapted theme) called WP-ChamberPress that contains all
the hardwired logic that builds up the site and its back-end. The plugin contains a lot of what otherwise
would go into your functions.php file and instantiates the 6 Custom Post Types while also providing all the
metaboxes (i.e. custom fields) for these types. Along with various configuration panels at the back-end to
set site-wide options. In addition the code provides several custom widgets that in combination with
specific custom post types such as the “member pages” will produce the desired sidebar content that
contains things like business hours, business logo, address, etc.
The visual style of the News theme was only altered slightly to give the website a little bit more shadows
and color to set it apart from the default look and feel of the News theme. An additional 8K of custom CSS
was added to support the output rendered from the WP-ChamberPress system.
The theme also contains 6 custom archive page templates, two custom pages to handle pricing and cost
pro-rating (based on the day of the year) for the Gravity Forms forms that are used to handle new
member enrollment and existing member renewals. There are also 6 matching single page templates for
the various Custom Post Types (board member, member, committee, deal, job, past event), and of course
6 custom pages for the different taxonomies associated with these Custom Post Types.
Things Of Interest
Do not rely on Gravity Forms as a shopping cart system. You can turn it into one but the amount of effort
you’ll have to put into it would not be the best way to spend your time or your client’s budget. For very
basic pricing and PayPal handling it’ll be fine but the amount of code needed to turn it into a proper
shopping cart system that can handle a lot of custom calculations and variables is not recommended.
The Event Manager plugin was chosen from the start but may not be the best choice either because it is
a real pain in the behind to configure it properly. Especially since much of the configuration can’t be done
programmatically but instead are done through dozens of back-end configuration panels. But once you
get through all that it does what it is supposed to do.
The site runs surprisingly well for the number of plugins, DB queries, etc. it is doing. However, don’t try
hosting this on a cheap shared plan. It is currently hosted on a shared plan at Media Temple but we have
yet to see what the CPU analysis will show under heavier loads.
If I have to develop a site similar in nature to this one I’d most likely prefer to use Drupal because while
the end result of the WP-ChamberPress system is certainly functional, the path towards getting to that
stage required a lot of “code contortion” because it really shows how WP was not designed with the same
architecture and purpose in mind as Drupal.
After the first week or so of having the website “live” the SEO results were starting to look even better
than I had anticipated originally. On average we score at least on the first page results for 80% of our
members (both business names or business type in case of geographic searches) but for about 45% of
our members we score one or more results in the top 6 results. We are also seeing a lot of geographic
related ranking take place as we have put a large percentage of our members on the map, with that I
mean the google maps, bing maps, etc. Often having the Oakley Chamber site score *higher* than the
actual websites of our members!
3. As some business have no websites of their own (a very tiny number, but they are out there) we wanted
to provide something of better value than a FaceBook or social media profile page. It appears now that a
guy named Larry who does garage doors in Contra Costa County is now the most famous Larry when
searching through a geographic based search (like from your smart phone). :-)
I did not track the amount of time I spent creating the site nor the amount of time Sallie worked on helping
with the vision and content but it is safe to say that if this was done as a commercial project the cost
would be roughly somewhere between $20.000 and $30.000.
Future Enhancements
A proper set of features for front-end posting and modification so members can edit their profile data, post
new jobs, deals, coupons, and announce their events. Currently the site offers a “change request form”
that at the back-end results in a manual copy-paste fest. Given the relatively low number of members this
is not yet an issue but might become one. Providing member access to the actual WordPress back-end
comes with a variety of problems (disallowing the members to see certain meta boxes that are part of
their profile page admin interface, for instance, some of which is actually controlled by third party
plugins).
Another Custom Post Type with associated theme integration to provide listings + profile information for
commercial real-estate for sale or lease in the area. Possibly as an additional small source of income for
the Oakley Chamber.
More SEO tweaking after analyzing the results of the first few months of having the site be live.
Contact
Stefan Didak
stefan@stefandidak.com
http://www.stefandidak.com
4. Plugins Used
• Comprehensive Google Map Plugin
• Dynamic Widgets
• Electric Studio Auto Post Expire
• Event Manager
• Genesis Featured Widget Amplified
• Genesis Responsive Slider
• Genesis Tabs
• Google Analytics
• Google sitemap plugin
• Gravity Forms
• Gravity Forms PayPal Add-On
• Gravity Forms Polls Add-on
• Jetpack by WordPress.com
• Link Manager
• Meta Box
• Posts 2 Posts
• Shortcodes Ultimate
• Simple Mail Address Encoder
• Spam Free Wordpress
• Twitter Feed for WordPress ***
• Ultimate tag cloud widget
• Woopra
• WordPress SEO
• WP Clean Up
• WP Email Capture
• WP Super Cache
• WP-ChamberPress (all the custom stuff)