修改wordpress xmlrpc API搞定通过vimrepress上传图片时没办法显示缩略图的问题

发现通过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发布。

更多
3 Responses Post a comment
  1. 匿名

    请问 我用这个修改了 得到的thumb_url是空。 看 :twisted: wp-upload目录下也有生成缩略图

    是不是漏掉了什么呢 本人菜鸟 呵呵

    我的邮箱 share2 at foxmail.com

  2. Hacklog » 修正vimrepress的一个bug

    [...] » 给vimrepress增加显示分类的功能并让它支持CodeColorer插件》,《Hacklog » 修改wordpress xmlrpc API搞定通过vimrepress上传图片时没办法显示缩略...》,这是第三篇关于这个插件的了。 [...]

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS