因此,默认的xmlrpcget_post
函数没有任何好的筛选器供您使用。解决方案:启动您自己的XML-RPC回调!
钩入xmlrpc_methods
并添加一个自定义方法,在本例中称为post_autop
. 数组键将是方法名,值是方法回调。
<?php
add_filter( \'xmlrpc_methods\', \'wpse44849_xmlrpc_methods\' );
/**
* Filters the XMLRPC method to include our own custom method
*/
function wpse44849_xmlrpc_methods( $method )
{
$methods[\'post_autop\'] = \'wpse44849_autop_callback\';
return $methods;
}
然后我们有了回调函数,它将接收
$args
. 这将做一些简单的事情:登录用户(验证用户名/密码),然后获取我们想要的帖子,用自动版本替换文本,然后返回帖子。
<?php
function wpse44849_autop_callback( $args )
{
$post_ID = absint( $args[0] );
$username = $args[1];
$password = $args[2];
$user = wp_authenticate( $username, $password );
// not a valid user name/password? bail.
if( ! $user || is_wp_error( $user ) )
{
return false;
}
$post = get_posts( array( \'p\' => $post_ID ) );
// no posts? bail.
if( empty( $post ) )
{
return false;
}
$post = $post[0];
// the magic happens here
$post->post_content = wpautop( $post->post_content );
return (array) $post;
}
当然,您可以在返回值之前对帖子进行任何自定义。这是上面的
as a plugin.
我使用了一些Python来测试这一点。
>>> import xmlrpclib as xmlrpc
>>> s = xmlrpc.ServerProxy(\'http://localhost/xmlrpc.php\')
>>> post = s.post_autop(1, \'admin\', \'password\')
>>> post
# content of the post here as a Python dict