SlideShare a Scribd company logo

Plugins Are Blueprints

Decoding the presentation, behavior and structure of WordPress plugins to make them your own

1 of 51
Download to read offline
PLUGINS ARE
   BLUEPRINTS
Decoding the presentation,
behavior and structure of
WordPress plugins to make
them your own




WordCamp Boston 2011
Marc Lavallee, @lavallee
Wesley Lindamood, @lindamood   Credit: Chris Ware- Building Stories
PLUGINS ARE
   BLUEPRINTS
Decoding the presentation,
behavior and structure of
WordPress plugins to make
them your own




WordCamp Boston 2011
Marc Lavallee, @lavallee
Wesley Lindamood, @lindamood   Credit: Chris Ware- Building Stories
CONFUSION
COHERENCE




            Credit: David Arpi/Flickr
DECODING A PLUGIN                        http://bit.ly/pKLC7I




                    Credit: Bob Baxley
PLUGIN USAGE



     USE                  PATCH                                       BUILD

 • W3 Total Cache
 • Google Analyticator   • FD Feedburner   • Slides for WordPress     • Embed.ly       • Link Roundup




       Use                    Patch          Prototype and          Draw inspiration     Start from
      as-is                                    customize                                  scratch

Recommended

TERMINALFOUR t44u 2009 - University of St Andrews Case Study
TERMINALFOUR t44u 2009 - University of St Andrews Case StudyTERMINALFOUR t44u 2009 - University of St Andrews Case Study
TERMINALFOUR t44u 2009 - University of St Andrews Case StudyTerminalfour
 
Using badges on your site
Using badges on your siteUsing badges on your site
Using badges on your siteEbizon
 
BuddyPress and the Future of WordPress Plugins
BuddyPress and the Future of WordPress PluginsBuddyPress and the Future of WordPress Plugins
BuddyPress and the Future of WordPress PluginsMark Jaquith
 
Architecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne IndiaArchitecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne IndiaJeremy Grelle
 
JSN Gruve Customization Manual
JSN Gruve Customization ManualJSN Gruve Customization Manual
JSN Gruve Customization ManualJoomlaShine
 
JSN Gruve Configuration Manual
JSN Gruve Configuration ManualJSN Gruve Configuration Manual
JSN Gruve Configuration ManualJoomlaShine
 
JSN Cube Configuration Manual
JSN Cube Configuration ManualJSN Cube Configuration Manual
JSN Cube Configuration ManualJoomlaShine
 

More Related Content

Similar to Plugins Are Blueprints

Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)johnnybiz
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Webphilogb
 
Rapid Prototyping With jQuery
Rapid Prototyping With jQueryRapid Prototyping With jQuery
Rapid Prototyping With jQueryPaul Bakaus
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareAlfresco Software
 
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...Amazon Web Services
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Adam Mokan
 
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreCreating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreSuzanne Dergacheva
 
Full Trust Solution Development in SharePoint 2013
Full Trust Solution Development in SharePoint 2013Full Trust Solution Development in SharePoint 2013
Full Trust Solution Development in SharePoint 2013Ed Musters
 
Best Practice Checklist for Building a Drupal Website
Best Practice Checklist for Building a Drupal WebsiteBest Practice Checklist for Building a Drupal Website
Best Practice Checklist for Building a Drupal WebsiteAcquia
 
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...Amazon Web Services
 
Putting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctionsPutting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctionsNullOps
 
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Michael Rys
 
Advanced Silverlight
Advanced SilverlightAdvanced Silverlight
Advanced Silverlightrsnarayanan
 
Java script infovis toolkit
Java script infovis toolkitJava script infovis toolkit
Java script infovis toolkitnikhilyagnic
 
Station Four: Web Redesign Presentation
Station Four: Web Redesign PresentationStation Four: Web Redesign Presentation
Station Four: Web Redesign Presentationcolberding
 
Webpack and Web Performance Optimization
Webpack and Web Performance OptimizationWebpack and Web Performance Optimization
Webpack and Web Performance OptimizationChen-Tien Tsai
 

Similar to Plugins Are Blueprints (20)

Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
 
Rapid Prototyping With jQuery
Rapid Prototyping With jQueryRapid Prototyping With jQuery
Rapid Prototyping With jQuery
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreCreating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
 
Full Trust Solution Development in SharePoint 2013
Full Trust Solution Development in SharePoint 2013Full Trust Solution Development in SharePoint 2013
Full Trust Solution Development in SharePoint 2013
 
Best Practice Checklist for Building a Drupal Website
Best Practice Checklist for Building a Drupal WebsiteBest Practice Checklist for Building a Drupal Website
Best Practice Checklist for Building a Drupal Website
 
Enterprise Dev and Test on AWS
Enterprise Dev and Test on AWSEnterprise Dev and Test on AWS
Enterprise Dev and Test on AWS
 
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
 
Putting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctionsPutting the 'ctions' in Azure Fun-ctions
Putting the 'ctions' in Azure Fun-ctions
 
Bower power
Bower powerBower power
Bower power
 
FusionCharts Clockworks
FusionCharts ClockworksFusionCharts Clockworks
FusionCharts Clockworks
 
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
 
Advanced Silverlight
Advanced SilverlightAdvanced Silverlight
Advanced Silverlight
 
Java script infovis toolkit
Java script infovis toolkitJava script infovis toolkit
Java script infovis toolkit
 
Station Four: Web Redesign Presentation
Station Four: Web Redesign PresentationStation Four: Web Redesign Presentation
Station Four: Web Redesign Presentation
 
Webpack and Web Performance Optimization
Webpack and Web Performance OptimizationWebpack and Web Performance Optimization
Webpack and Web Performance Optimization
 
Css framework
Css frameworkCss framework
Css framework
 

Recently uploaded

ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...SearchNorwich
 
Python For Kids - Sách Lập trình cho trẻ em
Python For Kids - Sách Lập trình cho trẻ emPython For Kids - Sách Lập trình cho trẻ em
Python For Kids - Sách Lập trình cho trẻ emNho Vĩnh
 
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...htrindia
 
Launching New Products In Companies Where It Matters Most by Product Director...
Launching New Products In Companies Where It Matters Most by Product Director...Launching New Products In Companies Where It Matters Most by Product Director...
Launching New Products In Companies Where It Matters Most by Product Director...Product School
 
AI improves software testing to be more fault tolerant, focused and efficient
AI improves software testing to be more fault tolerant, focused and efficientAI improves software testing to be more fault tolerant, focused and efficient
AI improves software testing to be more fault tolerant, focused and efficientKari Kakkonen
 
Relationship Counselling: From Disjointed Features to Product-First Thinking ...
Relationship Counselling: From Disjointed Features to Product-First Thinking ...Relationship Counselling: From Disjointed Features to Product-First Thinking ...
Relationship Counselling: From Disjointed Features to Product-First Thinking ...Product School
 
Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)
Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)
Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)François
 
Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...
Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...
Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...Product School
 
AGFM - Toyota Coaster 1HZ Install Guide.pdf
AGFM - Toyota Coaster 1HZ Install Guide.pdfAGFM - Toyota Coaster 1HZ Install Guide.pdf
AGFM - Toyota Coaster 1HZ Install Guide.pdfRodneyThomas28
 
Enterprise Architecture As Strategy - Book Review
Enterprise Architecture As Strategy - Book ReviewEnterprise Architecture As Strategy - Book Review
Enterprise Architecture As Strategy - Book ReviewAshraf Fouad
 
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)Jay Zhao
 
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...UiPathCommunity
 
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptxThe Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptxNeo4j
 
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Cprime
 
SKY Paradigms, change and cake: the steep curve of introducing new technologies
SKY Paradigms, change and cake: the steep curve of introducing new technologiesSKY Paradigms, change and cake: the steep curve of introducing new technologies
SKY Paradigms, change and cake: the steep curve of introducing new technologiesNeo4j
 
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24Umar Saif
 
Establishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry developmentEstablishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry developmentThorsten Huelsmann
 
Roundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfRoundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfMostafa Higazy
 
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptxGraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptxNeo4j
 
LF Energy Webinar: Introduction to TROLIE
LF Energy Webinar: Introduction to TROLIELF Energy Webinar: Introduction to TROLIE
LF Energy Webinar: Introduction to TROLIEDanBrown980551
 

Recently uploaded (20)

ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
 
Python For Kids - Sách Lập trình cho trẻ em
Python For Kids - Sách Lập trình cho trẻ emPython For Kids - Sách Lập trình cho trẻ em
Python For Kids - Sách Lập trình cho trẻ em
 
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
HBR SERIES METAL HOUSED RESISTORS POWER ELECTRICAL ABSORBS HIGH CURRENT DURIN...
 
Launching New Products In Companies Where It Matters Most by Product Director...
Launching New Products In Companies Where It Matters Most by Product Director...Launching New Products In Companies Where It Matters Most by Product Director...
Launching New Products In Companies Where It Matters Most by Product Director...
 
AI improves software testing to be more fault tolerant, focused and efficient
AI improves software testing to be more fault tolerant, focused and efficientAI improves software testing to be more fault tolerant, focused and efficient
AI improves software testing to be more fault tolerant, focused and efficient
 
Relationship Counselling: From Disjointed Features to Product-First Thinking ...
Relationship Counselling: From Disjointed Features to Product-First Thinking ...Relationship Counselling: From Disjointed Features to Product-First Thinking ...
Relationship Counselling: From Disjointed Features to Product-First Thinking ...
 
Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)
Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)
Mind your App Footprint 🐾⚡️🌱 (@FlutterHeroes 2024)
 
Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...
Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...
Cultivating Entrepreneurial Mindset in Product Management: Strategies for Suc...
 
AGFM - Toyota Coaster 1HZ Install Guide.pdf
AGFM - Toyota Coaster 1HZ Install Guide.pdfAGFM - Toyota Coaster 1HZ Install Guide.pdf
AGFM - Toyota Coaster 1HZ Install Guide.pdf
 
Enterprise Architecture As Strategy - Book Review
Enterprise Architecture As Strategy - Book ReviewEnterprise Architecture As Strategy - Book Review
Enterprise Architecture As Strategy - Book Review
 
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
 
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
Dev Dives: Leverage APIs and Gen AI to power automations for RPA and software...
 
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptxThe Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
 
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
 
SKY Paradigms, change and cake: the steep curve of introducing new technologies
SKY Paradigms, change and cake: the steep curve of introducing new technologiesSKY Paradigms, change and cake: the steep curve of introducing new technologies
SKY Paradigms, change and cake: the steep curve of introducing new technologies
 
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
Progress Report: Ministry of IT under Dr. Umar Saif Aug 23-Feb'24
 
Establishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry developmentEstablishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry development
 
Roundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfRoundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdf
 
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptxGraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
 
LF Energy Webinar: Introduction to TROLIE
LF Energy Webinar: Introduction to TROLIELF Energy Webinar: Introduction to TROLIE
LF Energy Webinar: Introduction to TROLIE
 

Plugins Are Blueprints

  • 1. PLUGINS ARE BLUEPRINTS Decoding the presentation, behavior and structure of WordPress plugins to make them your own WordCamp Boston 2011 Marc Lavallee, @lavallee Wesley Lindamood, @lindamood Credit: Chris Ware- Building Stories
  • 2. PLUGINS ARE BLUEPRINTS Decoding the presentation, behavior and structure of WordPress plugins to make them your own WordCamp Boston 2011 Marc Lavallee, @lavallee Wesley Lindamood, @lindamood Credit: Chris Ware- Building Stories
  • 4. COHERENCE Credit: David Arpi/Flickr
  • 5. DECODING A PLUGIN http://bit.ly/pKLC7I Credit: Bob Baxley
  • 6. PLUGIN USAGE USE PATCH BUILD • W3 Total Cache • Google Analyticator • FD Feedburner • Slides for WordPress • Embed.ly • Link Roundup Use Patch Prototype and Draw inspiration Start from as-is customize scratch
  • 7. PLUGIN USAGE USE PATCH BUILD • W3 Total Cache • Google Analyticator • FD Feedburner • Slides for WordPress • Embed.ly • Link Roundup Use Patch Prototype and Draw inspiration Start from as-is customize scratch
  • 8. CUSTOMIZING PLUGINS 1 Find the best available plugin 2 Explore through prototyping 3 Decide to build or patch 4 Begin development
  • 9. AN EDUCATED GUESS PRESENTATION BEHAVIOR STRUCTURE
  • 10. WHEN TO USE A PLUGIN PRESENTATION USE BEHAVIOR STRUCTURE Small AMOUNT OF PLUGIN CUSTOMIZATION Large
  • 11. WHEN TO PATCH A PLUGIN PRESENTATION USE BEHAVIOR PATCH STRUCTURE Small AMOUNT OF PLUGIN CUSTOMIZATION Large
  • 12. WHEN TO BUILD YOUR OWN PLUGIN PRESENTATION USE BEHAVIOR PATCH STRUCTURE BUILD Small AMOUNT OF PLUGIN CUSTOMIZATION Large
  • 14. A LIVING PATTERN LIBRARY Credit: Mark Killingsworth I start where the last man left off — Thomas Edison
  • 15. OUR STARTING POINT http://bit.ly/gKHLvt Slides for WordPress
  • 19. CONDITIONAL IMAGE LOADING http://bit.ly/pab-images ELEMENT BEFORE <div id="7118-slide3" data-src="http://e.opb.org/files/2011/07/3.jpg*450*600" /> ELEMENT AFTER <div id="7118-slide2"><img src="http://e.opb.org/files/2011/07/3.jpg" width="620" height="465" /> JAVASCRIPT function ensureImageIsLoaded( postID, slideNum ) {     var slideDiv = jQuery( "#" + getSlideElement( postID, slideNum ) );     // Do nothing if the slide image already exists     if ( slideDiv.has( "img" ).length )         return;     var imgData = slideDiv.attr( "data-src" );     if ( imgData ) {         var parts = imgData.split( "*" );         var img = jQuery( "<img/>" )             .attr( "src", parts[0] )             .attr( "width", parts[1] )             .attr( "height", parts[2] );         slideDiv.prepend( img );     } }
  • 20. CONDITIONAL SCRIPT LOADING http://bit.ly/pab-scripts <?php $argo_include_slideshow_deps = false; add_filter( 'post_gallery', 'argo_handle_slideshow', 10, 2 ); add_filter( 'wp_footer', 'argo_add_slideshow_deps' ); function argo_handle_slideshow( $output, $attr ) {     global $argo_include_slideshow_deps;     $argo_include_slideshow_deps = true;     return do_other_slideshow_things( $output, $attr ); } function argo_add_slideshow_deps() {     global $argo_include_slideshow_deps;     if ( ! $argo_include_slideshow_deps ) { return; }     // jQuery slides plugin from http://slidesjs.com/     $slides_src = plugins_url( 'js/slides.min.jquery.js', __FILE__ );     wp_register_script( 'jquery-slides', $slides_src, array ( 'jquery' ), '1.1.7', true );     wp_print_scripts( 'jquery-slides' ); } ?>
  • 21. PLUGIN SEDIMENT SLIDES FOR WORDPRESS PHP: 39k 895 lines 748 sloc NAVIS SLIDESHOWS PHP: 8k 244 lines 199 sloc
  • 22. WHAT WE CHANGED STRUCTURE PRESENTATION • Remove unneeded options and features BEHAVIOR • Conditionally load slideshow CSS, JS BEHAVIOR • Dynamically load images • Add custom taxonomy for sideshow content type • Add image permalinks STRUCTURE PRESENTATION • Add credit and caption • Adjust placement of UI controls, the width of images and look and feel of the slideshow to conform to Argo standards. Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 23. WHAT WE CHANGED STRUCTURE PRESENTATION • Remove unneeded options and features BEHAVIOR • Conditionally load slideshow CSS, JS BEHAVIOR • Dynamically load images • Add custom taxonomy for sideshow content type • Add image permalinks STRUCTURE PRESENTATION • Add credit and caption • Adjust placement of UI controls, the width of images and look and feel of the slideshow to conform to Argo standards. Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 24. WHAT WE CHANGED STRUCTURE PRESENTATION • Remove unneeded options and features BEHAVIOR • Conditionally load slideshow CSS, JS BEHAVIOR • Dynamically load images • Add custom taxonomy for sideshow content type • Add image permalinks STRUCTURE PRESENTATION • Add credit and caption • Adjust placement of UI controls, the width of images and look and feel of the slideshow to conform to Argo standards. Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 25. WHAT WE CHANGED STRUCTURE PRESENTATION • Remove unneeded options and features BEHAVIOR • Conditionally load slideshow CSS, JS BEHAVIOR • Dynamically load images • Add custom taxonomy for sideshow content type • Add image permalinks STRUCTURE PRESENTATION • Add credit and caption • Adjust placement of UI controls, the width of images and look and feel of the slideshow to conform to Argo standards. Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 27. OUR STARTING POINT http://bit.ly/gbx4j2 FD Feedburner
  • 29. MENU PLACEMENT <?php // In our theme's functions.php file if ( function_exists( 'feedburner_config_page' ) ) {     add_submenu_page( 'plugins.php','Feedburner Configuration', 'Feedburner Configuration',         'manage_options', 'argo_feedburner_menu', 'feedburner_conf' );     remove_submenu_page( 'plugins.php', 'fdfeedburner.php' ); } ?>
  • 30. USER AGENT CUSTOMIZATIONS <?php // In FD Feedburner plugin function feedburner_redirect() {     global $feed, $withcomments, $wp, $wpdb, $wp_version, $wp_db_version;     do_a_bunch_of_stuff();     // Do nothing if not a feed     if (!is_feed()) return;     $skip_useragents = array( '/feedburner/i', '/googlebot/i' );     $skip_useragents = apply_filters( 'feedburner_skip_useragents', $skip_useragents );     foreach ( $skip_useragents as $ua ) {         if ( preg_match( $ua, $_SERVER[ 'HTTP_USER_AGENT' ] ) ) return;     }     do_more_stuff(); } ?> <?php // In our theme add_filter( 'feedburner_skip_useragents', 'argo_allow_yahoo_pipes' ); function argo_allow_yahoo_pipes( $useragents ) {     $useragents[] = '/yahoo pipes/i';     return $useragents; } ?>
  • 31. WHAT WE CHANGED STRUCTURE PRESENTATION • No changes BEHAVIOR • Change user agent list BEHAVIOR • Add an email subscription form into the footer • Create an email subscription widget PRESENTATION STRUCTURE • Widget and footer styling Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 32. WHAT WE CHANGED STRUCTURE PRESENTATION • No changes BEHAVIOR • Change user agent list BEHAVIOR • Add an email subscription form into the footer • Create an email subscription widget PRESENTATION STRUCTURE • Widget and footer styling Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 33. WHAT WE CHANGED STRUCTURE PRESENTATION • No changes BEHAVIOR • Change user agent list BEHAVIOR • Add an email subscription form into the footer • Create an email subscription widget PRESENTATION STRUCTURE • Widget and footer styling Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 34. WHAT WE CHANGED STRUCTURE PRESENTATION • No changes BEHAVIOR • Change user agent list BEHAVIOR • Add an email subscription form into the footer • Create an email subscription widget PRESENTATION STRUCTURE • Widget and footer styling Small AMOUNT OF PLUGIN CUSTOMIZATION Large USE PATCH BUILD
  • 37. OUR STARTING POINT http://bit.ly/ij3O9C Embed.ly
  • 41. WORKFLOW IMPROVEMENTS <?php add_action( 'init', 'argo_register_jiffypost_type' ); function argo_register_jiffypost_type() {     register_post_type( 'jiffypost', array(         'labels' => array(             'name' => 'Jiffy Posts',             'singular_name' => 'Jiffy Post',         ),         'description' => 'Jiffy Posts',         'supports' => array( 'title', 'comments', 'author' ), # no editor!         'public' => true,         'menu_position' => 6,         'taxonomies' => array(),     ) ); }                                                                                  add_filter( 'wp_insert_post_data', 'argo_insert_post_content' ); function argo_insert_post_content( $data ) {     if ( 'jiffypost' != $data[ 'post_type' ] )         return $data;                                                                                      $content = '';     if ( isset( $_POST[ 'leadintext' ] ) ) {         $content = '<p>' . $_POST[ 'leadintext' ] . '</p>';     }     if ( isset( $_POST[ 'embedlyarea' ] ) ) {         $content .= $_POST[ 'embedlyarea' ];     }                                                                                      $data[ 'post_content' ] = $content;     return $data; } ?>
  • 42. WORKFLOW IMPROVEMENTS <?php add_meta_box( 'navisleadin', 'Lead in text', 'argo_embed_leadin_box',     'jiffypost', 'normal', 'high' ); add_filter( 'teeny_mce_buttons', 'argo_modify_teeny_mce_buttons' ) ); function argo_embed_leadin_box( $post ) {     $leadintext = get_post_meta( $post->ID, '_leadintext', true );     wp_tiny_mce( true,         array(             'editor_selector' => 'leadintext',             'setup' => 'tinyMCESetup',         )     ); ?> <p align="right"> <a id="edButtonHTML" class="">HTML</a> <a id="edButtonPreview" class="active">Visual</a> </p> <textarea id="leadintext" class="leadintext" name="leadintext" style="width: 98%"><?php esc_textarea( $leadintext ); ?></textarea> <?php } function argo_modify_teeny_mce_buttons( $buttons ) {     if ( 'jiffypost' != get_post_type() )         return $buttons;     return array( 'bold', 'italic', 'underline', 'strikethrough',         'link', 'unlink' ); } ?>
  • 45. DESIGN IMPROVEMENTS LINK PHOTO VIDEO RICH
  • 46. WHAT WE BUILT STRUCTURE PRESENTATION • Create a custom post type for embedded content • Keep requests for embedded content on the backend BEHAVIOR BEHAVIOR • Create a customized TinyMCE editor for use with character-limited lead-in text • Preview/edit embedded content in post admin STRUCTURE • Provide proper attribution through source and via fields • Create bookmarklet for adding JiffyPosts off-site PRESENTATION • Provide formatting of all embed.ly content type responses. • Reveal hierarchy of original and embedded content • Introduce visual variety for different post types Small AMOUNT OF PLUGIN CUSTOMIZATION Large • Encourage interaction around embedded content on-site USE PATCH BUILD
  • 47. WHAT WE BUILT STRUCTURE PRESENTATION • Create a custom post type for embedded content • Keep requests for embedded content on the backend BEHAVIOR BEHAVIOR • Create a customized TinyMCE editor for use with character-limited lead-in text • Preview/edit embedded content in post admin STRUCTURE • Provide proper attribution through source and via fields • Create bookmarklet for adding JiffyPosts off-site PRESENTATION • Provide formatting of all embed.ly content type responses. • Reveal hierarchy of original and embedded content • Introduce visual variety for different post types Small AMOUNT OF PLUGIN CUSTOMIZATION Large • Encourage interaction around embedded content on-site USE PATCH BUILD
  • 48. WHAT WE BUILT STRUCTURE PRESENTATION • Create a custom post type for embedded content • Keep requests for embedded content on the backend BEHAVIOR BEHAVIOR • Create a customized TinyMCE editor for use with character-limited lead-in text • Preview/edit embedded content in post admin STRUCTURE • Provide proper attribution through source and via fields • Create bookmarklet for adding JiffyPosts off-site PRESENTATION • Provide formatting of all embed.ly content type responses. • Reveal hierarchy of original and embedded content • Introduce visual variety for different post types Small AMOUNT OF PLUGIN CUSTOMIZATION Large • Encourage interaction around embedded content on-site USE PATCH BUILD
  • 49. WHAT WE BUILT STRUCTURE PRESENTATION • Create a custom post type for embedded content • Keep requests for embedded content on the backend BEHAVIOR BEHAVIOR • Create a customized TinyMCE editor for use with character-limited lead-in text • Preview/edit embedded content in post admin STRUCTURE • Provide proper attribution through source and via fields • Create bookmarklet for adding JiffyPosts off-site PRESENTATION • Provide formatting of all embed.ly content type responses. • Reveal hierarchy of original and embedded content • Introduce visual variety for different post types Small AMOUNT OF PLUGIN CUSTOMIZATION Large • Encourage interaction around embedded content on-site USE PATCH BUILD
  • 50. LESSONS LEARNED “I could tell you stories to curl your hair, but it looks like you’ve already heard ‘em.” — Barton Fink (1991) credit: iwdrm.tumblr.com
  • 51. QUESTIONS? Marc Lavallee @lavallee Wesley Lindamood @lindamood Slideshare http://slidesha.re/qsJEmY credit: iwdrm.tumblr.com