WordPress Web Application Development - Second Edition - Sample Chapter
Using WordPress as an Application Framework
-
Upload
tom-willmot -
Category
Technology
-
view
1.319 -
download
2
Transcript of Using WordPress as an Application Framework
WordPress is an Application Framework
1Friday, 17 August 12
Tom Willmothumanmade • happytables • wpremote
tomwillmot.com
hmn.md
wpremote.com
happytables.com
@tomwillmot
@humanmadeltd
@wpremote
@happytables
github.com/humanmade2Friday, 17 August 12
WordPress is not just for blogging.
3Friday, 17 August 12
WordPress is a CMS.
4Friday, 17 August 12
WordPress is not just a CMS.
5Friday, 17 August 12
WordPress is an Application Framework.
6Friday, 17 August 12
7Friday, 17 August 12
• What is an Application Framework
• What makes WordPress an Application Framework
• How we built the WP Remote web app on WordPress.
What is an Application Framework
8Friday, 17 August 12
What is an Application Framework
9Friday, 17 August 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_framework10Friday, 17 August 12
That sounds a lot like WordPress!
11Friday, 17 August 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_framework12Friday, 17 August 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_framework13Friday, 17 August 12
WordPress is web software you can use to create a beautiful website or blog.
14Friday, 17 August 12
WordPress is an Application Framework that happens to come with a default app called “Blog”.
15Friday, 17 August 12
WordPress is web software you can use to create a beautiful app, website or blog.
16Friday, 17 August 12
Application Frameworks are libraries of useful API’s & Classes
17Friday, 17 August 12
• 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
Core API’s
18Friday, 17 August 12
• 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
19Friday, 17 August 12
• 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
20Friday, 17 August 12
• 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
21Friday, 17 August 12
• 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
22Friday, 17 August 12
• 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
23Friday, 17 August 12
• 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
24Friday, 17 August 12
• 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
25Friday, 17 August 12
• 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
26Friday, 17 August 12
• 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
27Friday, 17 August 12
• 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
28Friday, 17 August 12
• 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
29Friday, 17 August 12
• 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
30Friday, 17 August 12
• 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
31Friday, 17 August 12
• 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
32Friday, 17 August 12
What did I miss?
33Friday, 17 August 12
The thing that makes WordPress uniquely powerful?
34Friday, 17 August 12
add_filter();
35Friday, 17 August 12
3rd Party API’s
• TLC Transients
• WP Thumb
• Custom Meta Box API
• WordPress Objects
36Friday, 17 August 12
• TLC Transientshttps://github.com/markjaquith/WP-TLC-Transients
• WP Thumb
• Custom Meta Box API
• WordPress Objects
• Term Meta
37Friday, 17 August 12
• TLC Transients
• WP Thumbhttps://github.com/humanmade/WPThumb
• Custom Meta Box API
• WordPress Objects
• Term Meta
38Friday, 17 August 12
• TLC Transients
• WP Thumb
• Custom Meta Box APIhttps://github.com/humanmade/Customs
• WordPress Objects
• Term Meta
39Friday, 17 August 12
• TLC Transients
• WP Thumb
• Custom Meta Box API
• WordPress Objectshttps://github.com/humanmade/WordPress-Objects
• Term Meta
40Friday, 17 August 12
• TLC Transients
• WP Thumb
• Custom Meta Box API
• WordPress Objects
• Term Metahttps://gist.github.com/2953813
41Friday, 17 August 12
All these API’s can be used without the “Blog”
part of WordPress
42Friday, 17 August 12
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.
43Friday, 17 August 12
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.
44Friday, 17 August 12
WordPress powered Apps!
45Friday, 17 August 12
WP Remote
Quick Demo
46Friday, 17 August 12
WordPressBack-end
WordPress PluginClient Site
Knockout.jsFront-endJSON
JSON
47Friday, 17 August 12
• Users
• Sites
• Site Meta
• Core, Plugin and Theme updates
• Groups
• History
• Backups
• Settings
48Friday, 17 August 12
• Standard WordPress subscriber level users.
• Custom Login, Registration and Lost Password pages and Change Password pages.
Users
49Friday, 17 August 12
• 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.
Sites
50Friday, 17 August 12
• 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.
Site Groups
51Friday, 17 August 12
• 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.
Plugin
52Friday, 17 August 12
• AMC Story Synchttp://www.amctv.com/shows/breaking-bad/story-sync
• Bendy Wordshttp://bendywords.com/demo-board/
• StudioPresshttp://www.woothemes.com/2011/07/supportpress/
Others
53Friday, 17 August 12
Done!
54Friday, 17 August 12
Thanks For Listening
55Friday, 17 August 12
Ask Questions Now
Or later on twitter @tomwillmot
56Friday, 17 August 12