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

Keep It Simple, Stupid.

荒野无灯weblog

修改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

    //把原文件最后一行注释掉
    //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发布。

Tagged in : wordpress,xmlrpc,api

All Comments (0)
Gravatar image
No Comments