Wow, that’s a lot of acronyms! Here’s my current version of the plugin:
To see what it’s about, please see this WordPress trac ticket..
I’ll add it to the WP plugins repository as soon as I make sure it works with 3.1 and has a sample use case I can release.
A typical call:
// in JS (check that wpJSON is defined somewhere prior)
wpJSON.request(
'myplugindomain.someRPCMethodNameHere',
{parameterName:'parameter value'},
function ( result ) {
// handle the successful result object here
},
function( code, error, data ) {
// handle the error object here
}
);
On the server side of your plugin, you can do something like this:
class My_Plugin_Control_Class {
public function __construct()
{
add_filter('json_server_classname', array(&$this, 'filter_json_server_classname'), 10, 2);
}
public function filter_json_server_classname( $server_class = '', $method = '' )
{
switch( $method ) :
case 'myplugindomain.someRPCMethodNameHere' :
case 'myplugindomain.someOtherRPCMethodNameHere' :
$server_class = 'My_Plugin_JSON_RPC_Server';
break;
endswitch;
return $server_class;
}
}
// instantiate your control class somewhere
// extend the JSON class
class My_Plugin_JSON_RPC_Server extends WP_JSON_RPC_Server {
public function __construct()
{
$this->methods['myplugindomain.someRPCMethodNameHere'] = 'this:someRPCMethodNameHere';
$this->methods['myplugindomain.someOtherRPCMethodNameHere'] = 'this:someOtherRPCMethodNameHere';
}
public function someRPCMethodNameHere( $args )
{
if ( isset( $args->{'parameterName'} ) ) {
// let's do something with this data!
return array(
'response-param-name' => __('We did something!', 'my-fancy-plugin'),
);
} else {
return new WP_Error(
-32602,
__('Invalid method parameters: myplugindomain.someRPCMethodNameHere must receive a value in the parameterName parameter.', 'my-fancy-plugin')
);
}
}
...
}