覆盖插件中的默认XMLRPC函数

时间:2012-03-23 作者:ltfishie

我想覆盖“metaWeblog.newMediaObject”xmlrpc调用,以便远程保存文件。来自wp xmlrpc server类中的mw\\u newMediaObject。php,我看到有一个钩子:

do_action(\'xmlrpc_call\', \'metaWeblog.newMediaObject\');
因此,我应该能够在插件中执行以下操作:

add_action (\'xmlrpc_call\', \'myWewMediaObject\');
function myWewMediaObject ($method) {
    if ($method==\'metaWeblog.newMediaObject\') { 
      //perform some custom action
    }
}
但是,由于do\\u action调用位于mw\\u newMediaObject函数的开头,因此我不确定在插件函数存在后如何停止执行。

请让我知道我是否在正确的轨道上,如果有其他方法可以做到这一点。

1 个回复
最合适的回答,由SO网友:EAMann 整理而成

实际上,这个钩子只允许您连接到执行该函数的开始,它不允许您重写任何内容。

如果要完全替换此函数,我建议使用两种不同的选项:

1。不要使用它,只需定义自己的XMLRPC方法(myNamespace.newMediaObject) 并称之为。

2。更换它,您可以连接到xmlrpc_methods 使用与添加新方法相同的方式进行筛选,并可以替换的回调metaWeblog.newMediaObject:

add_filter( \'xmlrpc_methods\', \'myMediaHandler\' );
function myMediaHandler( $methods ) {
    $methods[ \'metaWeblog.newMediaObject\' ] = \'myMediaObject\';

    return $methods;
}

function myMediaObject( $args ) {
    // ... custom functionality
}
只需确保与$args数组保持相同的格式,并在自定义方法中调用/应用相同的操作/过滤器,这样您就不会遇到任何意外。

结束

相关推荐

如何通过XML-RPC获取所有帖子(以块为单位)?

I would like to retrieve all posts of a blog via the XML-RPC API of Wordpress.有以下方法blogger.getRecentPosts 和metaWeblog.getRecentPosts 理论上,如果给出足够高的值作为职位数量(或-1),则应返回所有职位。但是,这不适用于非常大的博客或非常弱的服务器,这些服务器无法在内存中保存整个博客。在这种情况下,这些函数最多不会返回任何内容,也不会向响应XML中抛出错误。一种解决方案是一次检