修改wordpress xmlrpc API搞定通过vimrepress上传图片时没办法显示缩略图的问题
2011 五月 30
发现通过vimrepress 的BlogUpload 功能上传图片时,获取的图片虽然是带链接的,但是img标签的src指向的是原始大小的图片,如果图片本身很大的话,显示在博客上就不太好看了。要是能像在wp后台插入图片一样生成带缩略图指向原始图片的链接就好了。
查看了下wp的xmlrpc api 实现,发现上传图片其实是通过 mw_newMediaObject方法上传的。该方法最后返回的数据类型和数量,基本上不可能hook,再说了,wp_handle_upload 这个filter也不只是在xmlrpc server这里用到了。全局hook不太好,还是修改单个文件比较实际。
mw_newMediaObject只返回三个参数:file , url ,type
分别是文件名,文件URL,文件的MIME类型。
因此我这里给它加一个返回值:thumb_url .
wp-includes/class-wp-xmlrpc-server.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //把原文件最后一行注释掉 //return apply_filters( 'wp_handle_upload', array( 'file' => $name, 'url' => $upload[ 'url' ], 'type' => $type ), 'upload' ); //get thumbnail via xmlrpc //by 荒野无灯 2011/05/30 $ret=apply_filters( 'wp_handle_upload', array( 'file' => $name, 'url' => $upload[ 'url' ], 'type' => $type ), 'upload' ); if('image' == substr($type,0,5) ) { $thumb = wp_get_attachment_image_src( $id , 'medium' ); $thumb_url = array('thumb_url'=> $thumb[0] ); return $ret+$thumb_url; } else { return $ret; } |
然后修改vimrepress插件中的image_template,把img标签的里的%(url)s 参数修改 为 %(thumb_url)s 即可。
本文由荒野无灯使用vimrepress发布。









请问 我用这个修改了 得到的thumb_url是空。 看
wp-upload目录下也有生成缩略图
是不是漏掉了什么呢 本人菜鸟 呵呵
我的邮箱 share2 at foxmail.com
@匿名
单修改服务器端肯定不行。我的vimrepress也是修改过的。。。在这:
http://ihacklog.com/docs/blog.vim