wordpress as a cms
DESCRIPTION
TRANSCRIPT
Wordpress as a CMS
Brad Touesnardhttp://[email protected]
BarCampVancouver2008September 27th, 2008
Not just another list of plugins
Client:“I want a CMS.”
Why not a framework?
• Need to design a backend
• Usability
• Need to code a backend
• Difficult problems (WYSIWYG integration, file upload, content filters, etc)
• Security
• Quality assurance
Why not a CMS?
Joomla
ExpressionEngine
Mambo
Drupal
Ez Publish
Typo3
bitweaver
XOOPS
Why not a CMS?
Joomla
ExpressionEngine
Mambo
Drupal
Ez Publish
Typo3
bitweaver
XOOPS
Wordpress is a CMS!
Why not a CMS?
Joomla
ExpressionEngine
Mambo
Drupal
Ez Publish
Typo3
bitweaver
XOOPS
Wordpress is a CMS!
and it’s better...
Why is it better?
Backend Interface
• Designed by usability experts at Happy Cog
• Clean, Standards Compliant XHTML filters
• Flawless WYSIWYG Integration
• Easy media uploading and embedding
Wordpress.com• Very popular
• #29 trafficed site in the US (via Quantcast)
• Alexa Rank: 29
• 4,209,042 blogs, 153,086 new posts, 37,653,000 words today*
• Tons of user feedback
• An easy to sell to clients
• Corporate support: Automattic*All stats on this slide were recorded September 24th, 2008.
Malleable
• Plugin Hooks
• Template Tags
• Backend customization
Community
• Wordpress.org
• Forums
• Documentation
• Plugins
• Themes
Challenges
Case Study: GoHave1.com
Case Study: GoHave1.com
Case Study: GoHave1.com
Case Study: GoHave1.com
Custom Fields
• Store post meta data about posts
• Author (name, location, photo, blurb)
• Feature story
• Quick facts
GoHave1.com:
Displaying a Feature Story
$custom = get_post_custom();
if (isset($custom['feature_story'][0])) {
echo $custom['feature_story'][0];
}
Limitations ofCustom Fields
• No WYSIWYG
• Only relates to a single post
Create Relationships with Custom Fields
• Store related post ID in custom field
• Retrieve related post using the post ID
POST(12)
POST(14)
POST(58)
Feature Story: 14
Quick Facts: 58
Relationships with Custom Fields:
Benefits
• Users can edit using the WYSIWYG
• We can feature posts on several pages without copying
GoHave1.com:
Retrieving aFeature Story
$custom = get_post_custom();
if (isset($custom['feature_story'][0])) {
$id = $custom['feature_story'][0];
$story =& get_post($id);
}
print_r($story);stdClass Object
(
[ID] => 23
[post_author] => 1
[post_date] => 2008-03-25 14:48:37
[post_date_gmt] => 2008-03-25 22:48:37
[post_content] => I never entertained the idea...
[post_title] => Jo Krombholz's Story
[post_category] => 0
[post_excerpt] => I never entertained the idea...
[post_status] => publish
[comment_status] => open
[ping_status] => open
[post_password] =>
[post_name] => jo-krombholz
[to_ping] =>
[pinged] =>
[post_modified] => 2008-04-29 12:08:40
[post_modified_gmt] => 2008-04-29 20:08:40
[post_content_filtered] =>
[post_parent] => 0
[guid] => http://gohave1.com/archives/augue-ipsum-orci-dolor-interdum-enim/
[menu_order] => 0
[post_type] => post
[post_mime_type] =>
[comment_count] => 1
[ancestors] => Array
)
Relationships with Custom Fields:
Problems
Usability nightmare!
A. Posts that aren’t posts
B. Managing post IDs
“You want me to do what??”
FutureImprovements
Problem A:Posts that aren’t posts
Solution:
Develop a new post type called ‘element’
Won’t show up in post lists
Problem B:Managing Post IDs
Solution:
Simple post selection interface
Add panel below Categories
Include posts of type ‘element’
Final Thoughts
• Wordpress is not for every situation
• Only 90% of them
• As for the other 10%...
• Frameworks might work for you
• Write it from scratch!