SlideShare a Scribd company logo
1 of 56
Download to read offline
WordPress is an
                  Application Framework


Friday, 17 August 12                      1
Tom Willmot
                           humanmade • happytables • wpremote



                   @tomwillmot                     tomwillmot.com
                   @humanmadeltd                            hmn.md
                   @wpremote                         wpremote.com
                   @happytables                     happytables.com

                               github.com/humanmade
Friday, 17 August 12                                                  2
WordPress is not just for blogging.




Friday, 17 August 12                                         3
WordPress is a CMS.




Friday, 17 August 12                         4
WordPress is not just a CMS.




Friday, 17 August 12                                  5
WordPress is an Application Framework.




Friday, 17 August 12                                            6
Friday, 17 August 12   7
• What is an Application Framework
                       • What makes WordPress an Application
                         Framework
                       • How we built the WP Remote web app on
                         WordPress.




Friday, 17 August 12                                             8
What is an Application Framework




Friday, 17 August 12                                      9
A web application framework is a software
                       framework that is designed to support the
                       development of dynamic websites,Web applications
                       and Web services.The framework aims to alleviate
                       the overhead associated with common activities
                       performed in Web development. For example, many
                       frameworks provide libraries for database access,
                       templating frameworks and session management,
                       and often promote code reuse.



   http://en.wikipedia.org/wiki/Web_application_framework
Friday, 17 August 12                                                       10
That sounds a lot like
                           WordPress!



Friday, 17 August 12                            11
A web application framework is a software
                       framework that is designed to support the
                       development of dynamic websites,Web applications
                       and Web services.The framework aims to alleviate
                       the overhead associated with common activities
                       performed in Web development. For example, many
                       frameworks provide libraries for database access,
                       templating frameworks and session management,
                       and often promote code reuse.



   http://en.wikipedia.org/wiki/Web_application_framework
Friday, 17 August 12                                                       12
A web application framework is a software
                       framework that is designed to support the
                       development of dynamic websites,Web applications
                       and Web services.The framework aims to alleviate
                       the overhead associated with common activities
                       performed in Web development. For example, many
                       frameworks provide libraries for database access,
                       templating frameworks and session management,
                       and often promote code reuse.



   http://en.wikipedia.org/wiki/Web_application_framework
Friday, 17 August 12                                                       13
WordPress is web software you can use to
                       create a beautiful website or blog.




Friday, 17 August 12                                              14
WordPress is an Application Framework that
                       happens to come with a default app called
                       “Blog”.




Friday, 17 August 12                                                15
WordPress is web software you can use to
                       create a beautiful app, website or blog.




Friday, 17 August 12                                              16
Application Frameworks are libraries of
                       useful API’s & Classes




Friday, 17 August 12                                             17
Core API’s
                       •   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                             18
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     19
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     20
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     21
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     22
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     23
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     24
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     25
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     26
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     27
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     28
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     29
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     30
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     31
•   HTTP
                       •   XMLRPC
                       •   WP_User
                       •   WP_Rewrite
                       •   WPDB
                       •   WP_Cache & Transients
                       •   WP_Scripts
                       •   WP_Filesystem
                       •   admin-ajax.php
                       •   I18N
                       •   WP_Query
                       •   Security
                       •   Templating system
                       •   An Administration interface




Friday, 17 August 12                                     32
What did I miss?




Friday, 17 August 12                      33
The thing that makes WordPress uniquely
                       powerful?




Friday, 17 August 12                                             34
add_filter();


Friday, 17 August 12                  35
3rd Party API’s

                 • TLC Transients

                 • WP Thumb

                 • Custom Meta Box API

                 • WordPress Objects




Friday, 17 August 12                      36
• TLC Transients
                       https://github.com/markjaquith/WP-TLC-
                       Transients
              • WP Thumb
              • Custom Meta Box API
              • WordPress Objects
              • Term Meta

Friday, 17 August 12                                            37
• TLC Transients
              • WP Thumb
                       https://github.com/humanmade/WPThumb
              • Custom Meta Box API
              • WordPress Objects
              • Term Meta

Friday, 17 August 12                                          38
• TLC Transients
              • WP Thumb
              • Custom Meta Box API
                       https://github.com/humanmade/Customs
              • WordPress Objects
              • Term Meta

Friday, 17 August 12                                          39
• TLC Transients
              • WP Thumb
              • Custom Meta Box API
              • WordPress Objects
                       https://github.com/humanmade/WordPress-
                       Objects
              • Term Meta

Friday, 17 August 12                                             40
• TLC Transients
              • WP Thumb
              • Custom Meta Box API
              • WordPress Objects
              • Term Meta
                       https://gist.github.com/2953813




Friday, 17 August 12                                     41
All these API’s can be
                       used without the “Blog”
                          part of WordPress


Friday, 17 August 12                             42
Still need convincing?
                 •     Continuously improved.
                 •     Great backwards compatibility support.
                 •     Super easy to jump in and get started.
                 •     Can run on literally any server.
                 •     Widely tested, runs 16.7% of the web, some
                       of the largest sites in the world.


Friday, 17 August 12                                                43
Why Not

                 • Some of the core API’s are old and nasty.
                 • It doesn’t enforce a strict MVC structure.
                       https://github.com/markjaquith/WordPress-Skeleton/


                 • People might think your not a real software
                       engineer if your not using Ruby to build your
                       web app.



Friday, 17 August 12                                                        44
WordPress powered
                            Apps!


Friday, 17 August 12                       45
WP Remote


                         Quick Demo




Friday, 17 August 12                  46
WordPress                             Knockout.js
                                            JSON
                   Back-end                               Front-end




                               JSON




                                      WordPress Plugin
                                         Client Site




Friday, 17 August 12                                                   47
• Users

                 • Sites

                       • Site Meta

                       • Core, Plugin and Theme updates

                       • Groups

                       • History

                       • Backups

                       • Settings


Friday, 17 August 12                                      48
Users

                 • Standard WordPress subscriber level users.

                 • Custom Login, Registration and Lost
                   Password pages and Change Password
                   pages.




Friday, 17 August 12                                            49
Sites
                 • Sites are stored as a custom post_type.

                 • Each site has the post_author set to the user that owns
                   the site.

                 • The site status is set to private to signify that users
                   sites are private to them.

                 • Meta information about the site like home_url,
                   admin_url etc. are stored in post_meta. As are lists of
                   backups, history items and plugins and themes that
                   need updating.



Friday, 17 August 12                                                         50
Site Groups
                 • Site Group is a custom taxonomy

                 • Each group is a new term in that taxonomy

                 • Doesn’t matter if 2 users unknowingly use the
                   same group as each user only sees sites that
                   they own.

                 • We use a custom term_meta table to store
                   things like whether a group is collapsed or not.


Friday, 17 August 12                                                  51
Plugin
                 • Installed on each of the users sites

                 • We use the HTTP API to communicate
                   between the back-end and Plugin.

                 • The Plugin hooks into the Core, Plugin &
                   Theme update API’s to do the actual
                   updates.



Friday, 17 August 12                                          52
Others
                 • AMC Story Sync
                   http://www.amctv.com/shows/breaking-bad/
                   story-sync

                 • Bendy Words
                   http://bendywords.com/demo-board/

                 • StudioPress
                   http://www.woothemes.com/2011/07/
                   supportpress/


Friday, 17 August 12                                          53
Done!




Friday, 17 August 12           54
Thanks For Listening




Friday, 17 August 12                          55
Ask Questions Now



                       Or later on twitter @tomwillmot
Friday, 17 August 12                                     56

More Related Content

What's hot

XPages Blast - Lotusphere 2013
XPages Blast - Lotusphere 2013XPages Blast - Lotusphere 2013
XPages Blast - Lotusphere 2013Tim Clark
 
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charityIntegrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charityKrzysztof Sobkowiak
 
Mobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPressMobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPressDanilo Ercoli
 
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Krzysztof Sobkowiak
 
Managing Multisite: Lessons from a Large Network
Managing Multisite: Lessons from a Large NetworkManaging Multisite: Lessons from a Large Network
Managing Multisite: Lessons from a Large NetworkWilliam Earnhardt
 
Piecing Together the WordPress Puzzle
Piecing Together the WordPress PuzzlePiecing Together the WordPress Puzzle
Piecing Together the WordPress PuzzleBusiness Vitality LLC
 
Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)Divante
 
USG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysUSG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysEric Sembrat
 
Speeding up your WordPress Site - WordCamp Toronto 2015
Speeding up your WordPress Site - WordCamp Toronto 2015Speeding up your WordPress Site - WordCamp Toronto 2015
Speeding up your WordPress Site - WordCamp Toronto 2015Alan Lok
 
Html5 Offline Applications
Html5 Offline Applications Html5 Offline Applications
Html5 Offline Applications Sunny Sharma
 
Understanding WordPress Multisite
Understanding WordPress MultisiteUnderstanding WordPress Multisite
Understanding WordPress MultisiteRyan Imel
 
Total Browser Pwnag3 V1.0 Public
Total Browser Pwnag3   V1.0 PublicTotal Browser Pwnag3   V1.0 Public
Total Browser Pwnag3 V1.0 PublicRafal Los
 
WordPress(The Big Picture)
WordPress(The Big Picture)WordPress(The Big Picture)
WordPress(The Big Picture)Sandip Basnet
 
From Wordpress.com to Self-hosted
From Wordpress.com to Self-hostedFrom Wordpress.com to Self-hosted
From Wordpress.com to Self-hostedLuiza Libardi
 
CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013Andrew Khoury
 
Site Speed 101: How to Get Your Site to Load in 1 Second or Less
Site Speed 101: How to Get Your Site to Load in 1 Second or LessSite Speed 101: How to Get Your Site to Load in 1 Second or Less
Site Speed 101: How to Get Your Site to Load in 1 Second or LessDustin Nay
 

What's hot (20)

XPages Blast - Lotusphere 2013
XPages Blast - Lotusphere 2013XPages Blast - Lotusphere 2013
XPages Blast - Lotusphere 2013
 
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charityIntegrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
 
Mobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPressMobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPress
 
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
 
Managing Multisite: Lessons from a Large Network
Managing Multisite: Lessons from a Large NetworkManaging Multisite: Lessons from a Large Network
Managing Multisite: Lessons from a Large Network
 
Piecing Together the WordPress Puzzle
Piecing Together the WordPress PuzzlePiecing Together the WordPress Puzzle
Piecing Together the WordPress Puzzle
 
Introduction to cms and wordpress
Introduction to cms and wordpressIntroduction to cms and wordpress
Introduction to cms and wordpress
 
Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)
 
USG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysUSG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 Days
 
WordPress Multisite
WordPress MultisiteWordPress Multisite
WordPress Multisite
 
Speeding up your WordPress Site - WordCamp Toronto 2015
Speeding up your WordPress Site - WordCamp Toronto 2015Speeding up your WordPress Site - WordCamp Toronto 2015
Speeding up your WordPress Site - WordCamp Toronto 2015
 
Html5 Offline Applications
Html5 Offline Applications Html5 Offline Applications
Html5 Offline Applications
 
Understanding WordPress Multisite
Understanding WordPress MultisiteUnderstanding WordPress Multisite
Understanding WordPress Multisite
 
Total Browser Pwnag3 V1.0 Public
Total Browser Pwnag3   V1.0 PublicTotal Browser Pwnag3   V1.0 Public
Total Browser Pwnag3 V1.0 Public
 
Ithemes presentation
Ithemes presentationIthemes presentation
Ithemes presentation
 
WordPress(The Big Picture)
WordPress(The Big Picture)WordPress(The Big Picture)
WordPress(The Big Picture)
 
From Wordpress.com to Self-hosted
From Wordpress.com to Self-hostedFrom Wordpress.com to Self-hosted
From Wordpress.com to Self-hosted
 
WordCamp 2015
WordCamp 2015WordCamp 2015
WordCamp 2015
 
CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013
 
Site Speed 101: How to Get Your Site to Load in 1 Second or Less
Site Speed 101: How to Get Your Site to Load in 1 Second or LessSite Speed 101: How to Get Your Site to Load in 1 Second or Less
Site Speed 101: How to Get Your Site to Load in 1 Second or Less
 

Similar to Using WordPress as an Application Framework

Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web ApplicationSachin Walvekar
 
Optimizing the performance of WordPress
Optimizing the performance of WordPressOptimizing the performance of WordPress
Optimizing the performance of WordPressJosh Highland Giese
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The CloudIvo Jansch
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM iZend by Rogue Wave Software
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureColin Mackay
 
Pure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkPure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkBryan Ollendyke
 
Caching objects-in-memory
Caching objects-in-memoryCaching objects-in-memory
Caching objects-in-memoryMauro Cassani
 
High Performance WordPress
High Performance WordPressHigh Performance WordPress
High Performance WordPressvnsavage
 
01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinar01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinarAerospike, Inc.
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1asim78
 
High Voltage - Building Static Sites With Wordpress-Managed Content
High Voltage - Building Static Sites With Wordpress-Managed ContentHigh Voltage - Building Static Sites With Wordpress-Managed Content
High Voltage - Building Static Sites With Wordpress-Managed ContentNicolle Morton
 
Word press as your company website
Word press as your company websiteWord press as your company website
Word press as your company websiteKelli Wise
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012kennethaliu
 
Csun retrofitting anoosha&sathish-2
Csun retrofitting anoosha&sathish-2Csun retrofitting anoosha&sathish-2
Csun retrofitting anoosha&sathish-2Sathish Kumar
 
Word Press Security
Word Press SecurityWord Press Security
Word Press SecurityRandall Rode
 
Make Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedMake Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedPromet Source
 
PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8Acquia
 
Web Application Development using PHP and MySQL
Web Application Development using PHP and MySQLWeb Application Development using PHP and MySQL
Web Application Development using PHP and MySQLGanesh Kamath
 

Similar to Using WordPress as an Application Framework (20)

Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 
Optimizing the performance of WordPress
Optimizing the performance of WordPressOptimizing the performance of WordPress
Optimizing the performance of WordPress
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The Cloud
 
23 Ways To Speed Up WordPress
23 Ways To Speed Up WordPress23 Ways To Speed Up WordPress
23 Ways To Speed Up WordPress
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM i
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
Pure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkPure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talk
 
Caching objects-in-memory
Caching objects-in-memoryCaching objects-in-memory
Caching objects-in-memory
 
High Performance WordPress
High Performance WordPressHigh Performance WordPress
High Performance WordPress
 
The WordPress Way
The WordPress WayThe WordPress Way
The WordPress Way
 
01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinar01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinar
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1
 
High Voltage - Building Static Sites With Wordpress-Managed Content
High Voltage - Building Static Sites With Wordpress-Managed ContentHigh Voltage - Building Static Sites With Wordpress-Managed Content
High Voltage - Building Static Sites With Wordpress-Managed Content
 
Word press as your company website
Word press as your company websiteWord press as your company website
Word press as your company website
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
 
Csun retrofitting anoosha&sathish-2
Csun retrofitting anoosha&sathish-2Csun retrofitting anoosha&sathish-2
Csun retrofitting anoosha&sathish-2
 
Word Press Security
Word Press SecurityWord Press Security
Word Press Security
 
Make Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedMake Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speed
 
PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8
 
Web Application Development using PHP and MySQL
Web Application Development using PHP and MySQLWeb Application Development using PHP and MySQL
Web Application Development using PHP and MySQL
 

Recently uploaded

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Using WordPress as an Application Framework

  • 1. WordPress is an Application Framework Friday, 17 August 12 1
  • 2. Tom Willmot humanmade • happytables • wpremote @tomwillmot tomwillmot.com @humanmadeltd hmn.md @wpremote wpremote.com @happytables happytables.com github.com/humanmade Friday, 17 August 12 2
  • 3. WordPress is not just for blogging. Friday, 17 August 12 3
  • 4. WordPress is a CMS. Friday, 17 August 12 4
  • 5. WordPress is not just a CMS. Friday, 17 August 12 5
  • 6. WordPress is an Application Framework. Friday, 17 August 12 6
  • 8. • What is an Application Framework • What makes WordPress an Application Framework • How we built the WP Remote web app on WordPress. Friday, 17 August 12 8
  • 9. What is an Application Framework Friday, 17 August 12 9
  • 10. A web application framework is a software framework that is designed to support the development of dynamic websites,Web applications and Web services.The framework aims to alleviate the overhead associated with common activities performed in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and often promote code reuse. http://en.wikipedia.org/wiki/Web_application_framework Friday, 17 August 12 10
  • 11. That sounds a lot like WordPress! Friday, 17 August 12 11
  • 12. A web application framework is a software framework that is designed to support the development of dynamic websites,Web applications and Web services.The framework aims to alleviate the overhead associated with common activities performed in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and often promote code reuse. http://en.wikipedia.org/wiki/Web_application_framework Friday, 17 August 12 12
  • 13. A web application framework is a software framework that is designed to support the development of dynamic websites,Web applications and Web services.The framework aims to alleviate the overhead associated with common activities performed in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and often promote code reuse. http://en.wikipedia.org/wiki/Web_application_framework Friday, 17 August 12 13
  • 14. WordPress is web software you can use to create a beautiful website or blog. Friday, 17 August 12 14
  • 15. WordPress is an Application Framework that happens to come with a default app called “Blog”. Friday, 17 August 12 15
  • 16. WordPress is web software you can use to create a beautiful app, website or blog. Friday, 17 August 12 16
  • 17. Application Frameworks are libraries of useful API’s & Classes Friday, 17 August 12 17
  • 18. Core API’s • HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 18
  • 19. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 19
  • 20. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 20
  • 21. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 21
  • 22. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 22
  • 23. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 23
  • 24. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 24
  • 25. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 25
  • 26. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 26
  • 27. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 27
  • 28. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 28
  • 29. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 29
  • 30. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 30
  • 31. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 31
  • 32. HTTP • XMLRPC • WP_User • WP_Rewrite • WPDB • WP_Cache & Transients • WP_Scripts • WP_Filesystem • admin-ajax.php • I18N • WP_Query • Security • Templating system • An Administration interface Friday, 17 August 12 32
  • 33. What did I miss? Friday, 17 August 12 33
  • 34. The thing that makes WordPress uniquely powerful? Friday, 17 August 12 34
  • 36. 3rd Party API’s • TLC Transients • WP Thumb • Custom Meta Box API • WordPress Objects Friday, 17 August 12 36
  • 37. • TLC Transients https://github.com/markjaquith/WP-TLC- Transients • WP Thumb • Custom Meta Box API • WordPress Objects • Term Meta Friday, 17 August 12 37
  • 38. • TLC Transients • WP Thumb https://github.com/humanmade/WPThumb • Custom Meta Box API • WordPress Objects • Term Meta Friday, 17 August 12 38
  • 39. • TLC Transients • WP Thumb • Custom Meta Box API https://github.com/humanmade/Customs • WordPress Objects • Term Meta Friday, 17 August 12 39
  • 40. • TLC Transients • WP Thumb • Custom Meta Box API • WordPress Objects https://github.com/humanmade/WordPress- Objects • Term Meta Friday, 17 August 12 40
  • 41. • TLC Transients • WP Thumb • Custom Meta Box API • WordPress Objects • Term Meta https://gist.github.com/2953813 Friday, 17 August 12 41
  • 42. All these API’s can be used without the “Blog” part of WordPress Friday, 17 August 12 42
  • 43. Still need convincing? • Continuously improved. • Great backwards compatibility support. • Super easy to jump in and get started. • Can run on literally any server. • Widely tested, runs 16.7% of the web, some of the largest sites in the world. Friday, 17 August 12 43
  • 44. Why Not • Some of the core API’s are old and nasty. • It doesn’t enforce a strict MVC structure. https://github.com/markjaquith/WordPress-Skeleton/ • People might think your not a real software engineer if your not using Ruby to build your web app. Friday, 17 August 12 44
  • 45. WordPress powered Apps! Friday, 17 August 12 45
  • 46. WP Remote Quick Demo Friday, 17 August 12 46
  • 47. WordPress Knockout.js JSON Back-end Front-end JSON WordPress Plugin Client Site Friday, 17 August 12 47
  • 48. • Users • Sites • Site Meta • Core, Plugin and Theme updates • Groups • History • Backups • Settings Friday, 17 August 12 48
  • 49. Users • Standard WordPress subscriber level users. • Custom Login, Registration and Lost Password pages and Change Password pages. Friday, 17 August 12 49
  • 50. Sites • Sites are stored as a custom post_type. • Each site has the post_author set to the user that owns the site. • The site status is set to private to signify that users sites are private to them. • Meta information about the site like home_url, admin_url etc. are stored in post_meta. As are lists of backups, history items and plugins and themes that need updating. Friday, 17 August 12 50
  • 51. Site Groups • Site Group is a custom taxonomy • Each group is a new term in that taxonomy • Doesn’t matter if 2 users unknowingly use the same group as each user only sees sites that they own. • We use a custom term_meta table to store things like whether a group is collapsed or not. Friday, 17 August 12 51
  • 52. Plugin • Installed on each of the users sites • We use the HTTP API to communicate between the back-end and Plugin. • The Plugin hooks into the Core, Plugin & Theme update API’s to do the actual updates. Friday, 17 August 12 52
  • 53. Others • AMC Story Sync http://www.amctv.com/shows/breaking-bad/ story-sync • Bendy Words http://bendywords.com/demo-board/ • StudioPress http://www.woothemes.com/2011/07/ supportpress/ Friday, 17 August 12 53
  • 55. Thanks For Listening Friday, 17 August 12 55
  • 56. Ask Questions Now Or later on twitter @tomwillmot Friday, 17 August 12 56