5
votes

I have been tasked with creating an API for retrieving and adding content to Wordpress from a flash application and legacy CMS (non-PHP). My plan is to utilise the existing default xmlrpc endpoint and add any additional functionality by creating a plugin which hooks into xmlrpc_methods.

A previous attempt had been made by another developer based on the following code:

http://blog.5ubliminal.com/posts/remote-control-wordpress-blog-xmlrpc-api/

This code looks unwieldy and poorly documented to me and my preference would be to use this approach:

http://kovshenin.com/archives/custom-xml-rpc-methods-in-wordpress/

I would be grateful if anyone with experience in this area could confirm that:

  • I will be able to distinguish between separate blogs in an MU installation when both retrieving and posting data via XMLRPC
  • I will be able to retrieve and post to custom fields
  • writing a plugin is the way to go.

We do not have the option of using Wordpress 3 as it is still in Beta and we are under time pressure.

I would greatly appreciate appreciate any input / advice.

Many thanks,

2

2 Answers

2
votes

I've worked with WordPress' XMLRPC system before (using a WP-Hive installation with multiple separate blogs similar to a WPMU set-up). The new approach you're using is definitely simpler and easier to implement (I tried the 5ubliminal one as well the first time).

Whether or not you can distinguish between separate blogs in a MU installation depends entirely on how you build your handler function. You can build it to distinguish the separate blogs, to only function on specific blogs, or to treat the entire system as a single WordPress site. It's all up to you.

By "handler function" I mean a custom function you define to handle XMLRPC requests that call a specific, custom method (not necessarily the default WordPress methods). For example, I use XMLRPC in all my plug-ins to report back installation progress and errors - each plug-in makes an XMLRPC call to a custom handler (method) on my server.

Yes, you can retrieve and post to custom fields.

Absolutely writing a plug-in is the way to go. The only other options are to change core files (BAD idea) or to build it into your theme, in which case it could ONLY be used on MU sites using that theme. Build it as a site-wide MU plug-in that can be controlled on a site-by-site basis by the global admin.

2
votes

Wordpress XMLRPC offers various functionalities which can be harvested easily. I have used IXR_Library to parse the XML requests/responses. Currently with very small piece of code i can easily posts, fetch, edit and delete Posts in Wordpress based blogs either self hosted or on wordpress.com sites.

http://www.hurricanesoftwares.com/wordpress-xmlrpc-posting-content-from-outside-wordpress-admin-panel/ (reference)

  • When you have multiple blogs hosted via MU you will need site ID of all those blogs which will become the first parameter for $params (in our case 0 should be replaced with site_id).
  • In the reference i gave above you will see the option to fetch and post to all created custom fields (unfortunately, you can't create custom fields on the fly from my script)
  • You are welcome to write a WP plugin to do all of this, be my guest and let me know if you need my help. I have used the same technique to post to blogger, tumblr, Wordpress and Posterous using their API's. I hope this helps.