xmlrpc/metaWeblog.newMediaObjectのwp_handle_uploadフックの動作について。
-
xmlrpc経由でファイルをアップロードしたときにwp_handle_uploadフックを使ってmime-typeを変更しようとしても、上手いこと行きません。
xmlrpc の場合は、xmlrpc.phpのwp_xmlrpc_server::mw_newMediaObject()で独自処理をしているようで、そこでは、
1. ファイルのパスを示すであろう $file[‘file’] の値がbasename()されたファイル名が渡されてる。そのため、フック関数でファイルにアクセスできない。
2. wp_insert_attachment()の後にapply_filters()を読んでいるのでフック関数で値を変更してもデータベースには反映されない。Windows Live WriterがJPEGファイルをアップロードするときにmetaWeblog.newMediaObjectのtypeをapplication/octet-streamで渡して来ます。2.5RC1のメディアライブラリで見ると、画像のサムネイルが表示されないので微妙に気持ち悪かったので調べてみました。
2.2.3MEのソースも合わせて確認したのですが2.5RC1も2.2.3MEもxmlrpc.phpのwp_xmlrpc_server::mw_newMediaObject()同じでした。バグなのか仕様なのか分かりませんが、wp_handle_uploadフックの意味がxmlrpc経由場合だけ無くなってしまう気がします。ダッシュボード経由だとwp_handle_uploadのフックはちゃんと動きます。
確認した環境: 2.2.3ME/2.5RC1 (フォームのバージョン欄では英字が使えないらしいので追記)
- トピック「xmlrpc/metaWeblog.newMediaObjectのwp_handle_uploadフックの動作について。」には新たに返信することはできません。