Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Theme Development with the REST API

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Jack Lenox Jack Lenox
September 23, 2014

Theme Development with the REST API

A talk about WordPress theme development using the REST API that I gave at WordPress Leeds' September Dev Night.

Avatar for Jack Lenox

Jack Lenox

September 23, 2014
Tweet

More Decks by Jack Lenox

Other Decks in Technology

Transcript

  1. REST API • Pure data (JSON) • Fast • Due

    in WordPress core in 4.1/4.2 (probably Spring 2015) • Available now as a plugin: wp-api.org • There is also a public WordPress.com REST API that you can use with any self-hosted site via Jetpack…
  2. Y u build theme with REST API? • Speed •

    More engaging user experience • Better mobile experience • More control (failed connections etc.)
  3. Just some recommendations • {{ mustache }} • Backbone •

    HTML5/JS stuff: localStorage, WebSockets, Application Cache
  4. What is {{ mustache }}? • Logic-less templating language •

    Pure <markup> with the occasional {{ placeholder }} • Can be used by a whole load of languages • Importantly in this instance, PHP and JavaScript
  5. What’s Backbone? • Super-lightweight JavaScript framework • MVC(ish) • Essentially

    designed to improve the organisation of your JavaScript • Designed for interaction with REST APIs (that’s lucky isn’t it?)
  6. Challenges • SEO? • JavaScript (what if it isn’t enabled?)

    • WordPress options… • Customisable permalinks? • Customizerrrrrr? • Plugins omgbbq?
  7. Rise to the challenges! • SEO – non-JS backup •

    JS – non-JS backup • WordPress options – umm, we’ll come back to this later
  8. localStorage • We can put a lot of stuff in

    here to speed things up (post URLs and IDs) • Possibly even REST API responses? • Maybe load stuff asynchronously when user first visits the site?
  9. WebSockets • Use this instead of AJAX for our additional

    requests • Ratchet (PHP library for WebSockets)
  10. Application Cache • We can create a proper offline experience

    for users • Any JS can run when the user isn't connected to the internet if it's stored in Application Cache • There are a lot of complications around Application Cache • Hopefully in the not too distant future we can use Service Worker instead