SlideShare a Scribd company logo
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

PDF
Best Friend || Worst Enemy: WordPress Multisite
PDF
Content Management Systems (CMS) & Wordpress theme development
KEY
Introduction to CMS
PDF
Anatomy of a Wordpress theme
PDF
WordPress Development Tools and Best Practices
PDF
Improve WordPress performance with caching and deferred execution of code
PDF
Installing wordpress
KEY
Exploring WordPress Multisite
Best Friend || Worst Enemy: WordPress Multisite
Content Management Systems (CMS) & Wordpress theme development
Introduction to CMS
Anatomy of a Wordpress theme
WordPress Development Tools and Best Practices
Improve WordPress performance with caching and deferred execution of code
Installing wordpress
Exploring WordPress Multisite

What's hot (20)

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

Similar to Using WordPress as an Application Framework (20)

PDF
Making Of PHP Based Web Application
PDF
Optimizing the performance of WordPress
PDF
Php Development In The Cloud
PDF
23 Ways To Speed Up WordPress
PPTX
Building and managing applications fast for IBM i
PDF
Introduction to node js - From "hello world" to deploying on azure
PPTX
Pure Speed Drupal 4 Gov talk
PPTX
Technical Report on WordPress, XAMPP, CDN .pptx
PDF
Caching objects-in-memory
PDF
High Performance WordPress
PDF
The WordPress Way
PDF
01282016 Aerospike-Docker webinar
PDF
Asp.Net 3 5 Part 1
PDF
High Voltage - Building Static Sites With Wordpress-Managed Content
PDF
Word press as your company website
PDF
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
PPTX
Csun retrofitting anoosha&sathish-2
PDF
Word Press Security
PPT
Make Drupal Run Fast - increase page load speed
PPTX
PHP Performance tuning for Drupal 8
Making Of PHP Based Web Application
Optimizing the performance of WordPress
Php Development In The Cloud
23 Ways To Speed Up WordPress
Building and managing applications fast for IBM i
Introduction to node js - From "hello world" to deploying on azure
Pure Speed Drupal 4 Gov talk
Technical Report on WordPress, XAMPP, CDN .pptx
Caching objects-in-memory
High Performance WordPress
The WordPress Way
01282016 Aerospike-Docker webinar
Asp.Net 3 5 Part 1
High Voltage - Building Static Sites With Wordpress-Managed Content
Word press as your company website
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Csun retrofitting anoosha&sathish-2
Word Press Security
Make Drupal Run Fast - increase page load speed
PHP Performance tuning for Drupal 8
Ad

Recently uploaded (20)

PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Cloud computing and distributed systems.
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation theory and applications.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Approach and Philosophy of On baking technology
PDF
Spectral efficient network and resource selection model in 5G networks
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
cuic standard and advanced reporting.pdf
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Assigned Numbers - 2025 - Bluetooth® Document
Chapter 3 Spatial Domain Image Processing.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Cloud computing and distributed systems.
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
Encapsulation theory and applications.pdf
Big Data Technologies - Introduction.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
MIND Revenue Release Quarter 2 2025 Press Release
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
A Presentation on Artificial Intelligence
Approach and Philosophy of On baking technology
Spectral efficient network and resource selection model in 5G networks
“AI and Expert System Decision Support & Business Intelligence Systems”
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
The AUB Centre for AI in Media Proposal.docx
cuic standard and advanced reporting.pdf
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Assigned Numbers - 2025 - Bluetooth® Document

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