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

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

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