記事投稿のメディア追加時に「Client Side Image Resize」が動かない

client-side-image-resize
Client Side Image Resize

クライアント側でJPEG画像がリサイズされてサーバにアップされる便利なプラグイン「Resize images before upload」だったが、Wordpress 3.9になってから動かなくなったので、筆者は代替のプラグインとして「Client Side Image Resize」を利用しています。

ところが最近になって気づいたんですが、この「Client Side Image Resize」を有効にした状態で、WP管理画面のメディアからJPEG画像をアップするとちゃんとリサイズされるのですが、固定ページと記事の投稿からJPEG画像をアップするとリサイズしてくれてなかったです。

調べてみると、Pluploadを読んでいる箇所は、下記の2つがあることがわかりました。

  1. /wp-admin/includes/media.php
    固定ページと記事投稿時に使用してるっぽい。Pluploadへのフックは、「Plupload_default_settings」や「plupload_default_params」あたり。
  2. /includes/media.php
    管理画面のメディアから画像をアップするときに使用してるっぽい。Pluploadへのフックは、「plupload_init」あたり。

Client Side Image Resize」では、上記の「2. /includes/media.php」にしかフックしてないのが原因でした。

さっそく、「Client Side Image Resize」を改造し、下記のように「1. /wp-admin/includes/media.php」にもフィルターフックを通してあげると、うまくリサイズされるようになりました。

class DevHouse_Client_Side_Image_Resize {

    function __construct() {
        add_filter("plupload_init", array($this, "inject_plupload_settings"), 20);
        add_filter("plupload_default_settings", array($this, "inject_plupload_settings"), 20);

        load_plugin_textdomain('client-side-image-resize', false, basename( dirname( __FILE__ ) ) . '/languages' );

        $plugin = plugin_basename(__FILE__);
        add_filter("plugin_action_links_" . $plugin, array($this, 'plugin_settings_link'));

※上記のとおり32行目のフィルターフックを追加

この「Client Side Image Resize」は、2014-5-2からリリースされて295Download。なかなか良いプラグインだと思うんですけど人気ないですね。皆さんまだ気づいていないとか? 画像を加工できるクライアントさんが多いとか?

以上、ご参考になりましたら幸いです。

※上記の内容は全て自己責任のもとでご参考ください。