Upload
mpvanwinkle
View
1.294
Download
2
Embed Size (px)
DESCRIPTION
Citation preview
Pods + WP = CMS
Sort of …
What do we want in a CMS?
• Flexible – Does different things • Robust – Does things well
Is Wordpress a CMS? Yes
• Wordpress is really good at publishing one kind of content: the Post
• Its interface is easy to learn and easy to teach. • Theming is especially powerful. Design community
• Plugins and custom fields provide addiMonal flexibility on a post by post basis.
Is Wordpress a CMS? No
• Major challenges customizing backend UI • All post types essenMally the same
• Custom fields difficult to work with in complex ways
• Scalability issues
So what?
• Time is money • Consultants need to maximize funcMonality/Mme equaMon.
Custom Fields
• Good for on the fly customizaMon • Bad for complex content types
Querying Custom Fields
$args = “meta_key=airline_name&value=American”; $args = “meta_key=arrives&meta_compare=>=&meta_value=DATE()”
query_posts($args);
MulMple custom fields?
funcMon get_post_meta_mulMple($metaDataList) {
global $wpdb;
$querystr = "SELECT p.* FROM $wpdb-‐>posts AS p WHERE p.ID IN ( ";
$querystr .= "SELECT post_id FROM $wpdb-‐>postmeta WHERE "; $innerqry = array(); foreach($metaDataList as $key => $value) {
$innerqry[] = $wpdb-‐>prepare( "(meta_key = %s AND meta_value = %s)", $key, $value ); }
$querystr .= implode(" OR ", $innerqry);
$querystr .= " GROUP BY post_id "; $querystr .= "HAVING count(*) = " . count($metaDataList);
$querystr .= ") AND p.post_status = 'publish' ";
$metaResults = $wpdb-‐>get_results($querystr, OBJECT); return $metaResults;
} Source: hsp://Mnyurl.com/ldadam
Scalability
• Most wordpress users will never experience performance issues because the number pages just isn’t enough to maser.
• But consultants sMll need to be concerned.
Scalability
• All posts/types are in one table. • All custom fields are in longtext format which means they can store up to 4GB.
• Table sizes are effecMvely doubled by custom fields 10,000 posts with 10 cfs each is like having 100,000 rows. Add in revisions and even simple queries become hogs.
So What are/is Pods?
• Not a plugin … really • Pods = Simple, scalable, CMS soluMon for Wordpress.
• UlMmate flexibility with being too Mme intensive.
• Frontend/Backend CustomizaMon a cinch.
Example: Flight List
Example: Flight List
Example: Flight List
Example: Flight List
Example: Flight List
Example: Flight List
Example: Flight List
Example: Flight List
Example: TemplaMng
Example: TemplaMng
<?php $flight = new Pod(‘flight’); $flight-‐>findRecords(‘arrives ASC’, -‐1); echo $flight-‐>showTemplate(‘flight-‐list’); ?>
Example: TemplaMng
Example: TemplaMng
{@field.column}
Example: TemplaMng
{@airline.name} -‐ {@name}, {@departs} <br/>
Example: TemplaMng
hsp://www.yourdomain.com/flights/
Example: TemplaMng
hsp://www.yourdomain.com/flights/?airline=2
Example: TemplaMng
<?php $flight = new Pod(‘flight’); $flight-‐>findRecords(‘arrives ASC’, -‐1); echo $flight-‐>getFilters(‘airline’, ‘Filter’); echo $flight-‐>showTemplate(‘flight-‐list’); ?>
Example: TemplaMng
Example: TemplaMng
<?php $form = new Pod('flight'); echo $form-‐>publicForm(); ?>
Example: TemplaMng
Example: TemplaMng
<?php $form = new Pod('flight'); echo $form-‐>publicForm(); ?>
<?php $form = new Pod('flight'); $fields = array('name','arrive','depart'); echo $form-‐>publicForm($fields); ?>
Example: TemplaMng
Example: TemplaMng
Showcase
MulMple custom fields?
funcMon get_post_meta_mulMple($metaDataList) {
global $wpdb;
$querystr = "SELECT p.* FROM $wpdb-‐>posts AS p WHERE p.ID IN ( ";
$querystr .= "SELECT post_id FROM $wpdb-‐>postmeta WHERE "; $innerqry = array(); foreach($metaDataList as $key => $value) {
$innerqry[] = $wpdb-‐>prepare( "(meta_key = %s AND meta_value = %s)", $key, $value ); }
$querystr .= implode(" OR ", $innerqry);
$querystr .= " GROUP BY post_id "; $querystr .= "HAVING count(*) = " . count($metaDataList);
$querystr .= ") AND p.post_status = 'publish' ";
$metaResults = $wpdb-‐>get_results($querystr, OBJECT); return $metaResults;
} Source: hsp://Mnyurl.com/ldadam
Showcase
<?php $di = new Pod('distress_index'); $di-‐>findRecords('name DESC', -‐1, "t.un > 6.00 AND t.cpi < 2.00"); echo $di-‐>showTemplate('distress_data_table'); ?>
Scalability
• Using Custom Fields: – 600 rows x 6 custom fields = 3600 table rows
• Using Pods: – 600 table rows
Showcase
What about Custom Taxonomies/Post Types?
• Wordpress argues that custom taxonomies and the introducMon of post types alleviates the need for excessive use of custom fields.
• But this only increases the scalability slightly, there are sMll problems for large sites.
Pods-‐nosis NegaMve?
• Because pods data is saved in separate tables, standard Wordpress post features are not available. (i.e. comments/akismet)
• Wordpress does not currently endorse the pods cms strategy and instead is pushing the “one post type fits all strategy”.
• Pods community is considerably smaller than the wordpress community.
Why use pods?
• Learn one plugin, build anything you want. • Your site has lots of relaMonships between types of content.
• Scalability is a concern. • Truly custom, customizaMon
Summary
• There is no RIGHT way to use Wordpress as a CMS.
• Pods is a tool for developers, not users. • Pods is the most flexible/scalable CMS opDon currently available for Wordpress.
More info?
• www.podscms.org • www.mikevanwinkle.com
• @podscms, @mpvanwinkle
A QuesMon?
• Should Wordpress.org abandon it’s own asempts to make WP a CMS? Can WP be everything to everyone?