WordPress APIs
Upcoming SlideShare
Loading in...5
×
 

WordPress APIs

on

  • 9,559 views

 

Statistics

Views

Total Views
9,559
Views on SlideShare
9,504
Embed Views
55

Actions

Likes
3
Downloads
50
Comments
0

1 Embed 55

http://www.slideshare.net 55

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WordPress APIs WordPress APIs Presentation Transcript

  • WordPress APIs Joseph Scott http://josephscott.org/
  • APIs - The Big Two XML-RPC & AtomPub
  • XML-RPC Basics • XML over HTTP POST • Basic data types (int, bool, string, double, dateTime.iso8601, base64) combined with structs and arrays • Supports pipelining with system.multicall • Authentication generally in request body • Spec - xmlrpc.com/spec
  • XML-RPC Request <?xml version=quot;1.0quot;?> <methodCall> <methodName>metaWeblog.getPost</methodName> <params> <param> <value><int>1</int></value> </param> <param> <value><string>admin</string></value> </param> <param> <value><string>happiness</string></value> </param> </params> </methodCall>
  • XML-RPC Response <?xml version=quot;1.0quot;?> <methodResponse> <params> <param> <value> <struct> <member><name>postid</name><value><string>1</string></value></member> to <member><name>description</name><value><string>Welcome WordPress. This is your first post. Edit or delete it, then start blogging!</string></value></member> <member><name>title</name><value><string>Hello world!</string><value></ member> ... </struct> </value> </param> </params> </methodResponse>
  • AtomPub Basics • XML over HTTP (GET, POST, PUT, DELETE) • Shared base with Atom feeds • Collections (Posts, Comments, Media), Entries (Individual posts and comments) • Great intro from Joe Gregorio - http:// bitworking.org/news/343/intro-to-atompub- on-youtube • http://tools.ietf.org/html/rfc5023
  • AtomPub Request curl -u “admin:happiness” http://localhost/~joseph/wp/trunk/wp-app.php/post/1
  • AtomPub Response <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <entry xmlns=quot;http://www.w3.org/2005/Atomquot; xmlns:app=quot;http://www.w3.org/2007/appquot; xml:lang=quot;enquot;> <id>http://localhost/~joseph/wp/trunk/?p=1</id> <title type=quot;textquot;>Hello world!</title> <updated>2008-08-08T01:01:03Z</updated> <published>2008-08-08T01:01:03Z</published> <app:edited>2008-08-08T01:01:03Z</app:edited> <app:control> <app:draft>no</app:draft> </app:control> <author><name>admin</name></author> <link href=quot;http://localhost/~joseph/wp/trunk/?p=1quot; /> <content type=quot;textquot;>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</content> <link rel=quot;editquot; href=quot;http://localhost/~joseph/wp/trunk/wp-app.php/post/1quot; /> <category scheme=quot;http://localhost/~joseph/wp/trunkquot; term=quot;Uncategorizedquot; /> <summary type=quot;textquot;>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</summary> </entry>
  • Discovery • Really Simple Discovery (RSD) • http://cyber.law.harvard.edu/blogs/gems/tech/ rsd.html <link rel=quot;EditURIquot; type=quot;application/rsd+xmlquot; title=quot;RSDquot; href=quot;http://localhost/wp/xmlrpc.php?rsdquot; />
  • RSD <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <rsd version=quot;1.0quot; xmlns=quot;http://archipelago.phrasewise.com/rsdquot;> <service> <engineName>WordPress</engineName> <engineLink>http://wordpress.org/</engineLink> <homePageLink>http://localhost/wp</homePageLink> <apis> <api name=quot;WordPressquot; blogID=quot;1quot; preferred=quot;truequot; apiLink=quot;http://localhost/ wpxmlrpc.phpquot; /> <api name=quot;Movable Typequot; blogID=quot;1quot; preferred=quot;falsequot; apiLink=quot;http://localhost/wp/ xmlrpc.phpquot; /> <api name=quot;MetaWeblogquot; blogID=quot;1quot; preferred=quot;falsequot; apiLink=quot;http://localhost/wp/ xmlrpc.phpquot; /> <api name=quot;Bloggerquot; blogID=quot;1quot; preferred=quot;falsequot; apiLink=quot;http://localhost/wp/ xmlrpc.phpquot; /> <api name=quot;Atomquot; blogID=quot;quot; preferred=quot;falsequot; apiLink=quot;http://localhost/~joseph/wp/wp- app.php/servicequot; /> </apis> </service> </rsd>
  • 4,619 3,079,080
  • 2008 Totals 4,619 AtomPub 3,079,080 XML-RPC
  • 2009 Year To Date 3,312 AtomPub 703,673 XML-RPC
  • XML-RPC Blog APIs MetaWeblog WordPress (metaWeblog.*) (wp.*) Blogger Movable Type (blogger.*) (mt.*)
  • Extending MetaWeblog • Many new fields to getPost/newPost/editPost • wp_slug, wp_password, wp_author_id, wp_author_display_name, date_created_gmt, post_status, custom_fields, mt_keywords (tags) • dateCreated vs. date_created_gmt
  • WordPress Methods • Comment Management, new in 2.7 (wp.getComment, wp.newComment, wp.editComment, wp.deleteComment) • Page management (wp.getPage, wp.editPage, wp.newPage, etc.) • Category Management (wp.newCategory, wp.deleteCategory, etc.) • Tag Management (wp.getTags - more to come)
  • Applications Windows Live Writer MarsEdit
  • More Applications http://codex.wordpress.org/Weblog_Client • Scribefire (Firefox Plugin) • Windows- MS Word 2007, Blogdesk, Blogjet, Raven, Flock, Qumana • Mac - Ecto, Blogo, MacJournal, TextMate • Linux - QTM, Gnome Blog, Drivel, BloGTK
  • iPhone App • http://iphone.wordpress.org/ • Free & Open Source (GPL) • ~ 165,000 downloads • Uses XML-RPC to manage your blog
  • iPhone App - 1.2 http://iphone.wordpress.org/2008/11/11/help-test- wordpress-for-iphone-version-12/ • Comment Moderation • Landscape mode • Link creation help • Create/edit Pages
  • iPhone App 231,079 Posts in the last 6 months
  • Developer Tools - Mac HTTPScoop http://www.tuffcode.com/ XML-RPC Client http://ditchnet.org/xmlrpc/
  • Developer Tools - Windows Fiddler http://www.fiddlertool.com/fiddler/
  • XML-RPC for WP Devs • Add your own XML-RPC methods add_filter( 'xmlrpc_methods', 'joseph_attach_xmlrpc_methods' ); function joseph_attach_xmlrpc_methods( $methods ) { $methods['joseph.hello'] = 'joseph_xmlrpc_hello'; return $methods; }
  • XML-RPC for WP Devs • Add your own XML-RPC methods function joseph_xmlrpc_hello( $args ) { if ( empty( $args[0] ) ) return new IXR_Error( 2000, __( 'No name was provided.' ) ); $salutation = quot;Hello {$args[0]}, nice to see you!quot;; return $salutation; }
  • XML-RPC for WP Devs • XML-RPC Client $rpc = new IXR_Client( 'http://example.com/xmlrpc.php' ); $status = $rpc->query( ‘demo.addTwoNumbers’, 4, 5 ); if ( !$status ) { print ‘Error ( ‘ . $rpc->getErrorCode( ) . ‘ ): ‘; print $rpc->getErrorMessage( ) . “n”; exit; } $result = $rpc->getResponse( );
  • bbPress XML-RPC • Part of version 1.0 (when it comes out) • Pingback support • bbPress Live - WordPress Plugin • BuddyPress forums
  • Going Forward • More data/features exposed via XML-RPC & AtomPub • Everything wp-admin can do? • Likely a WordPress namespace for new AtomPub features
  • Username Password
  • OAuth Username Password
  • Applications On Top of WordPress
  • InterPress
  • XML-RPC Developers http://lists.automattic.com/mailman/listinfo/wp-xmlrpc
  • Thank You
  • Find Me • http://josephscott.org/ • joseph@josephscott.org • http://twitter.com/josephscott/ • #wordpress-dev