Перезаписать функцию XMLRPC по умолчанию из плагина

Я хочу перезаписать вызов «metaWeblog.newMediaObject» xmlrpc, чтобы файл был удален удаленно. Из mw_newMediaObject в классе-wp-xmlrpc-server.php, я вижу, что есть крючок:

do_action('xmlrpc_call', 'metaWeblog.newMediaObject'); 

Поэтому я должен был что-то сделать в своем плагине:

 add_action ('xmlrpc_call', 'myWewMediaObject'); function myWewMediaObject ($method) { if ($method=='metaWeblog.newMediaObject') { //perform some custom action } } 

Однако, поскольку вызов do_action находится в начале функции mw_newMediaObject, я не уверен, как остановить выполнение после того, как моя функция плагина существует.

Пожалуйста, дайте мне знать, если я на правильном пути, и если есть другой способ сделать это.

Solutions Collecting From Web of "Перезаписать функцию XMLRPC по умолчанию из плагина"

Фактически, этот крючок просто позволяет вам привязываться к началу выполнения этой функции, это не позволяет вам переопределить что-либо.

Если вы хотите полностью заменить эту функцию, я рекомендую два разных варианта:

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 и вызывать / применять те же действия / фильтры в своем пользовательском методе, чтобы вы не сталкивались с неожиданностями.