「WordPress Popular Posts」でtimthumb.phpを使わないサムネイル表示の方法

当ブログのサイドバーで日、週、月でアクセスが多い記事を表示しています。これはプラグイン「WordPress Popular Posts」を使っているんですが、先日サーバーのWAFをONにしたところサムネイルが表示されなくなってしまいました。
原因は脆弱性で話題になったtimthumb.php。というわけで、これを使わずサムネイルを表示させるようカスタムしてみました。


WordPress Popular Posts

WordPress Popular Posts

カスタムの方法としては、プラグインの本体ファイルを編集する必要があります。
あくまで自己責任で実施するようにしてください。

また、プラグインのアップデートがあった場合、ふたたびファイルを編集しなおす必要があります。

対処すべき3行のコード

編集しなければならないのは、サムネイル出力に関する部分のみです。
本来はtimtumb.phpを使ってサムネイルのクロップやリサイズをされるんですが、2011年後半辺りからスクリプトの脆弱性が話題になりました。

今のところ脆弱性を修正したものが配布されているので、ファイルを差し替えれば問題はありません。

ただ、サーバーのWAFを有効にしてみたところ、timthumb.php自体が動かなかったんですよね。まぁパーミッションいじればよかったのかも・・・とか、いまさら思ってますけど。

兎にも角にも、サムネイルをきちっと表示させるために修正するのは、たった3行のコードだけです。

編集するのは、wordpress-popular-posts.phpの1078行目と1089行目、それと1192行目になります。

1078行目と1089行目を差し替える

1078行目と1089行目は、以下のコードと差し替えます。

$thumb .= "<img src=\"{$path}\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" alt=\"{$title}\" border=\"0\" class=\"wpp-thumbnail wpp_fp\" />";

これでtimthumb.phpを使わずに、サムネイルを出力するよう変更されます。
ただ、このままだと出力される画像が、アイキャッチに登録した元画像になり、縦横比が狂うことがあります。

1192行目で引数を削除する

続いてアイキャッチ画像がちゃんと出力されるよう修正しなければならないのが、1192行目のコードです。

$thumbnail = wp_get_attachment_image_src( $thumbnail_id );

このコードは、引数として"full"が指定されているんですが、これを削除してやればOKです。

修正完了後、timthumb.phpのバージョンが2.0以前のものであったなら、削除するのが無難でしょう。