我想覆盖“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函数的开头,因此我不确定在插件函数存在后如何停止执行。
请让我知道我是否在正确的轨道上,如果有其他方法可以做到这一点。
最合适的回答,由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数组保持相同的格式,并在自定义方法中调用/应用相同的操作/过滤器,这样您就不会遇到任何意外。