WordPress Building Better Relationships

Post on 28-Jan-2015

111 views 0 download

Tags:

description

For basic content publishing needs, the ease-of-use of WordPress shines. Unfortunately, once a project exceeds 500 pages, using WordPress is much less straightforward. How has Boston University made it work? From a technical standpoint, building relationships between content objects and creating simple to use UIs for managing the relationships is key. Once established, the semantic relationships can be coupled with bits of meta data to construct menus, indexes, facets, filters, and so much more. Using code examples, this talk will highlight essential parts of the WordPress API and demonstrate various techniques used in BU plugins and themes that help us build better large websites.

Transcript of WordPress Building Better Relationships

WordPress:Building Better Relationships

Text

ordPress @ BU

2007 20122008 2009 2010 2011

141 sites

342 sites

581 sites

136 sites0 sites

636 sites

2007 20122008 2009 2010 2011

Total:

+ 270 In-progress+ 2,323 Blogs= 3,229 Sites

A range of offerings:

1. Fully custom2. Quick setup3. DIY tools

Big sites are hard

Lack of vision

Lack of consistency

Lack of clear accountability

Team dynamics and skill

Inadequate search capabilities

Performance

Complex workflows

Focusing on technology before understanding the problem

Politics

What makes them hard?

content design

site

tools

Main Third-PartyGravity Forms

WP SuperCache

Akismet

Networks for WordPress

Main BU-specificBU Navigation

Access Control List (w/ Single Sign-on)

User Management (w/ Single Sign-on)

Content Banner

Post Details

Advanced Tiny MCE

Site Manager

....

Integratedw/ BU apps BU Calendar

BU Maps

Google Search Appliance

Course Feeds

Training Manager

Emergency Alert

How many plugins does it take?

the magic number seven

*George A. Miller. "The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information". The Psychological Review, 1956, vol. 63, pp. 81!97.

+/- two

Custom Post Types

Benefits Risks• Admin menu w/label

• Separate templates (automatic)

• Separate namespace

• Easy to add metaboxes

• Good performance

• Not supported by all plugins

• More difficult to move

• No XML-RPC support

• No mobile support

• No cross-relationship support built-in

  $supports  =  array(     'title',     'bu-­‐content-­‐banner',     'bu-­‐post-­‐details',     'comments'   );

  $taxonomies  =  array(     'category'   );

  $labels  =  array(     'name'  =>  _x('Close-­‐ups',  'post  type  general  name'),     'singular_name'  =>  _x('Close-­‐ups',  'post  type  singular  name'));

Post type registration

  $args  =  array(     'labels'  =>  $labels,     'description'  =>  '',     'publicly_queryable'  =>  true,     'exclude_from_search'  =>  false,     'capability_type'  =>  'post',     'capabilities'  =>  array(),     'map_meta_cap'  =>  null,     'hierarchical'  =>  false,     'rewrite'  =>  array('slug'  =>  'closeup'),     'has_archive'  =>  false,     'query_var'  =>  true,     'supports'  =>  array(),     'taxonomies'  =>  $taxonomies,     'show_ui'  =>  true,     'menu_position'  =>  null,     'menu_icon'  =>  null,     'permalink_epmask'  =>  EP_PERMALINK,     'can_export'  =>  true,     'show_in_nav_menus'  =>  false,     'show_in_menu'  =>  true,     'supports'  =>  $supports   );   register_post_type('closeup',  $args);

Consistency vs. Freedom

man + machine

Curation

Demo + Code

Code available at https://github.com/gcorne/featured-posts

Discovery+ little surprises

Keyword Analysis + Relevance Algorithm

Yet Another Related Posts Plugin(by) @mitcho

meaningful

clear

logicalsubstantial

cohesive

Semantic value

Classification +Taxonomy

Taxonomy registration

$args  =  array(   'hierarchical'  =>  false,     'show_ui'  =>  true,     'labels'  =>  array(     'name'  =>  'Media  Types',       'singular_name',  'Media  Type'     ),   'query_var'  =>  true,     'rewrite'  =>  true,);

register_taxonomy('media-­‐type',  array('post'),  $args);

$tax_q  =  array(          'taxonomy'  =>  'media-­‐type',          'field'  =>  'id',          'terms'  =>  $term_id));

$q_args  =  array('post_type'  =>  'any','post_status'  =>  'publish','tax_query'  =>  $tax_q

);

$custom_q  =  WP_Query($q_args);

while($custom_q-­‐>has_posts())  {$custom_q-­‐>the_post();//  render  post  list  using  template  tags//  

}

Simple taxonomy query

list of terms list of posts in a term specific post

taxonomy usage: standard

post list

taxonomy usage: filter

term-basedfilter

shorter post list

Up next» + mobile+ workflow plugin+ libraries+ infrastructure

Gregory Corneliusdesign by Scott Dasse

(by)

"Holding Hands" —Elizabeth Buiehttp://www.!lickr.com/photos/ebuie/3626180065

Image credits