Wordcamp Fayetteville Pods Presentation (PPTX)

Preview:

DESCRIPTION

This is @mpvanwinkle's presentation on WP PodsCMS from wordcamp fayetteville, more info here: http://www.mikevanwinkle.com/?p=478

Citation preview

Pods + WP = CMSSort 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 additional

flexibility on a post by post basis.

Is Wordpress a CMS? No

• Major challenges customizing backend UI• All post types essentially the same• Custom fields difficult to work with in complex

ways• Scalability issues

So what?

• Time is money• Consultants need to maximize

functionality/time equation.

Custom Fields

• Good for on the fly customization• 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);

Multiple custom fields?

function get_post_meta_multiple($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: http://tinyurl.com/ldadam

Scalability

• Most wordpress users will never experience performance issues because the number pages just isn’t enough to matter.

• But consultants still 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 effectively 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 solution for

Wordpress.• Ultimate flexibility with being too time

intensive. • Frontend/Backend Customization 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: Templating

Example: Templating

<?php$flight = new Pod(‘flight’);$flight->findRecords(‘arrives ASC’, -1);echo $flight->showTemplate(‘flight-list’);?>

Example: Templating

Example: Templating

{@field.column}

Example: Templating

{@airline.name} - {@name}, {@departs} <br/>

Example: Templatinghttp://www.yourdomain.com/flights/

Example: Templatinghttp://www.yourdomain.com/flights/?airline=2

Example: Templating

<?php$flight = new Pod(‘flight’);$flight->findRecords(‘arrives ASC’, -1);echo $flight->getFilters(‘airline’, ‘Filter’);echo $flight->showTemplate(‘flight-list’);?>

Example: Templating

Example: Templating

<?php$form = new Pod('flight');echo $form->publicForm();?>

Example: Templating

Example: Templating

<?php$form = new Pod('flight');echo $form->publicForm();?>

<?php$form = new Pod('flight');$fields = array('name','arrive','depart');echo $form->publicForm($fields);?>

Example: Templating

Example: Templating

Showcase

Multiple custom fields?

function get_post_meta_multiple($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: http://tinyurl.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 introduction of post types alleviates the need for excessive use of custom fields.

• But this only increases the scalability slightly, there are still problems for large sites.

Pods-nosis Negative?

• 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 relationships between

types of content.• Scalability is a concern. • Truly custom, customization

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 option

currently available for Wordpress.

More info?

• www.podscms.org• www.mikevanwinkle.com• @podscms, @mpvanwinkle

A Question?

• Should Wordpress.org abandon it’s own attempts to make WP a CMS? Can WP be everything to everyone?