WordPress Meetup Show Your Site Notes on http://oakleychamber.comDevelopment EnvironmentVMware (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 ispreferred 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 thevirtualized LAMP servers. Basic installation with SSH, Apache2, MySQL, PHP, etc. and then extendedwith Webmin (http://www.webmin.com/) and Virtualmin (http://www.webmin.com/virtualmin.html) as wellas VSFTPd (https://security.appspot.com/vsftpd.html).Most importantly, the development and development testing servers have Xdebug (http://xdebug.org)installed (and conﬁguration ﬁles to turn Xdebug and proﬁling support on and off). Serious developers whoare forced to use PHP should *never* be without Xdebug and *should* run frequent proﬁling tests on theircode 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 thebest money you’ll ever spend if you wish to whip your PHP mess into shape.The Goal of the WebsiteMost Chamber Websites provide very little value to their members. The so-called business listings ontheir site are nothing more than mostly blank pages with just the business name and address. If you’relucky 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 listingsplugin that would provide the list of members. But after looking at many chamber sites and the abysmalstate they are in around the country I decided we could do better than that and set out to createsomething that is of *real* value to members. This is how the idea of the “member proﬁle pages” gotstarted 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 athing or two about SEO stuff but decided to do all the “magic” at an even better level by seamlesslyintegrating “structured content” (http://eastbaywp.com/2012/03/links-structured-content/). And by that Imean 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 tocompete if you have a crazy developer in your region creating a site like this and scoring all the bestresults in search engines, thereby encouraging members of nearby chambers to join ours because weprovide them some very speciﬁc additional value for their money. :-)The main plan for the member pages, events, past event write-ups, jobs, deals, etc. was to seamlesslyintegrate all these different portions of content to mix in with each other. For example, a member proﬁlepage would contain a section on the upcoming events, the past events the member has hosted or hasbeen involved in, their current specials and deals, pictures and brochures (PDF ﬁles), etc. This has beenaccomplished by using the Post 2 Post plugin and relatively minor (yet because of the number of crossreferences in the content being rendered, a lot!) of custom code to get the correct content from the DBunder the various different circumstances. The same Post 2 Post features have been used to createassociations between members and events, board members and member businesses, and about 12other relational aspects of the content.
Oakley Chamber WordPress SpeciﬁcsUsed the Genesis Framework (http://www.studiopress.com/) and a slightly (visually) modiﬁed Newstheme.Developed a plugin (to separate logic from the adapted theme) called WP-ChamberPress that contains allthe hardwired logic that builds up the site and its back-end. The plugin contains a lot of what otherwisewould go into your functions.php ﬁle and instantiates the 6 Custom Post Types while also providing all themetaboxes (i.e. custom ﬁelds) for these types. Along with various conﬁguration panels at the back-end toset site-wide options. In addition the code provides several custom widgets that in combination withspeciﬁc custom post types such as the “member pages” will produce the desired sidebar content thatcontains 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 shadowsand color to set it apart from the default look and feel of the News theme. An additional 8K of custom CSSwas 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 costpro-rating (based on the day of the year) for the Gravity Forms forms that are used to handle newmember enrollment and existing member renewals. There are also 6 matching single page templates forthe various Custom Post Types (board member, member, committee, deal, job, past event), and of course6 custom pages for the different taxonomies associated with these Custom Post Types.Things Of InterestDo not rely on Gravity Forms as a shopping cart system. You can turn it into one but the amount of effortyou’ll have to put into it would not be the best way to spend your time or your client’s budget. For verybasic pricing and PayPal handling it’ll be ﬁne but the amount of code needed to turn it into a propershopping 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 isa real pain in the behind to conﬁgure it properly. Especially since much of the conﬁguration can’t be doneprogrammatically but instead are done through dozens of back-end conﬁguration panels. But once youget 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 tryhosting this on a cheap shared plan. It is currently hosted on a shared plan at Media Temple but we haveyet 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 whilethe end result of the WP-ChamberPress system is certainly functional, the path towards getting to thatstage required a lot of “code contortion” because it really shows how WP was not designed with the samearchitecture and purpose in mind as Drupal.After the ﬁrst week or so of having the website “live” the SEO results were starting to look even betterthan I had anticipated originally. On average we score at least on the ﬁrst page results for 80% of ourmembers (both business names or business type in case of geographic searches) but for about 45% ofour members we score one or more results in the top 6 results. We are also seeing a lot of geographicrelated ranking take place as we have put a large percentage of our members on the map, with that Imean the google maps, bing maps, etc. Often having the Oakley Chamber site score *higher* than theactual websites of our members!
As some business have no websites of their own (a very tiny number, but they are out there) we wantedto provide something of better value than a FaceBook or social media proﬁle page. It appears now that aguy named Larry who does garage doors in Contra Costa County is now the most famous Larry whensearching 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 helpingwith the vision and content but it is safe to say that if this was done as a commercial project the costwould be roughly somewhere between $20.000 and $30.000.Future EnhancementsA proper set of features for front-end posting and modiﬁcation so members can edit their proﬁle data, postnew 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 thisis not yet an issue but might become one. Providing member access to the actual WordPress back-endcomes with a variety of problems (disallowing the members to see certain meta boxes that are part oftheir proﬁle page admin interface, for instance, some of which is actually controlled by third partyplugins).Another Custom Post Type with associated theme integration to provide listings + proﬁle information forcommercial real-estate for sale or lease in the area. Possibly as an additional small source of income forthe Oakley Chamber.More SEO tweaking after analyzing the results of the ﬁrst few months of having the site be live.ContactStefan Didakstefan@stefandidak.comhttp://www.stefandidak.com
Plugins Used• Comprehensive Google Map Plugin• Dynamic Widgets• Electric Studio Auto Post Expire• Event Manager• Genesis Featured Widget Ampliﬁed• 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)