WordPress APIs

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    WordPress APIs - Presentation Transcript

    1. WordPress APIs Joseph Scott http://josephscott.org/
    2. APIs - The Big Two XML-RPC & AtomPub
    3. 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
    4. XML-RPC Request <?xml version=\"1.0\"?> <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>
    5. XML-RPC Response <?xml version=\"1.0\"?> <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>
    6. 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
    7. AtomPub Request curl -u “admin:happiness” \\ http://localhost/~joseph/wp/trunk/wp-app.php/post/1
    8. AtomPub Response <?xml version=\"1.0\" encoding=\"utf-8\"?> <entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:app=\"http://www.w3.org/2007/app\" xml:lang=\"en\"> <id>http://localhost/~joseph/wp/trunk/?p=1</id> <title type=\"text\">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=\"http://localhost/~joseph/wp/trunk/?p=1\" /> <content type=\"text\">Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</content> <link rel=\"edit\" href=\"http://localhost/~joseph/wp/trunk/wp-app.php/post/1\" /> <category scheme=\"http://localhost/~joseph/wp/trunk\" term=\"Uncategorized\" /> <summary type=\"text\">Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</summary> </entry>
    9. Discovery • Really Simple Discovery (RSD) • http://cyber.law.harvard.edu/blogs/gems/tech/ rsd.html <link rel=\"EditURI\" type=\"application/rsd+xml\" title=\"RSD\" href=\"http://localhost/wp/xmlrpc.php?rsd\" />
    10. RSD <?xml version=\"1.0\" encoding=\"UTF-8\"?> <rsd version=\"1.0\" xmlns=\"http://archipelago.phrasewise.com/rsd\"> <service> <engineName>WordPress</engineName> <engineLink>http://wordpress.org/</engineLink> <homePageLink>http://localhost/wp</homePageLink> <apis> <api name=\"WordPress\" blogID=\"1\" preferred=\"true\" apiLink=\"http://localhost/ wpxmlrpc.php\" /> <api name=\"Movable Type\" blogID=\"1\" preferred=\"false\" apiLink=\"http://localhost/wp/ xmlrpc.php\" /> <api name=\"MetaWeblog\" blogID=\"1\" preferred=\"false\" apiLink=\"http://localhost/wp/ xmlrpc.php\" /> <api name=\"Blogger\" blogID=\"1\" preferred=\"false\" apiLink=\"http://localhost/wp/ xmlrpc.php\" /> <api name=\"Atom\" blogID=\"\" preferred=\"false\" apiLink=\"http://localhost/~joseph/wp/wp- app.php/service\" /> </apis> </service> </rsd>
    11. 4,619 3,079,080
    12. 2008 Totals 4,619 AtomPub 3,079,080 XML-RPC
    13. 2009 Year To Date 3,312 AtomPub 703,673 XML-RPC
    14. XML-RPC Blog APIs MetaWeblog WordPress (metaWeblog.*) (wp.*) Blogger Movable Type (blogger.*) (mt.*)
    15. 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
    16. 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)
    17. Applications Windows Live Writer MarsEdit
    18. 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
    19. iPhone App • http://iphone.wordpress.org/ • Free & Open Source (GPL) • ~ 165,000 downloads • Uses XML-RPC to manage your blog
    20. 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
    21. iPhone App 231,079 Posts in the last 6 months
    22. Developer Tools - Mac HTTPScoop http://www.tuffcode.com/ XML-RPC Client http://ditchnet.org/xmlrpc/
    23. Developer Tools - Windows Fiddler http://www.fiddlertool.com/fiddler/
    24. 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; }
    25. 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 = \"Hello {$args[0]}, nice to see you!\"; return $salutation; }
    26. 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( );
    27. bbPress XML-RPC • Part of version 1.0 (when it comes out) • Pingback support • bbPress Live - WordPress Plugin • BuddyPress forums
    28. Going Forward • More data/features exposed via XML-RPC & AtomPub • Everything wp-admin can do? • Likely a WordPress namespace for new AtomPub features
    29. Username Password
    30. OAuth Username Password
    31. Applications On Top of WordPress
    32. InterPress
    33. XML-RPC Developers http://lists.automattic.com/mailman/listinfo/wp-xmlrpc
    34. Thank You
    35. Find Me • http://josephscott.org/ • joseph@josephscott.org • http://twitter.com/josephscott/ • #wordpress-dev

    + josephscottjosephscott, 7 months ago

    custom

    1760 views, 1 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1760
      • 1760 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 8
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories