「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以前のものであったなら、削除するのが無難でしょう。

「WordPressプラグイン」新着記事

「Site Kit」 Googleが各種レポートを統合して閲覧できる、WordPressプラグインの開発ベータ版を公開

ホシナ カズキ

カスタムブロックを追加するなら「Block Lab」プラグインを導入すると幸せかもしれない

ホシナ カズキ

【2016年版】モバデビで絶賛稼働中のWordPressプラグイン

ホシナ カズキ

「SNS Count Cache」v0.10.0におけるFacebook取得の不具合を解決する

ホシナ カズキ

「SNS Count Cache」のFacebookカウント数取得できない問題を暫定的に解決した

ホシナ カズキ

もっと見る

モバデビはモバイルやウェブのネタ、ニュースMaciPhoneなどのApple関連、WordPressのことなど、いろいろ書く雑食系ブログメディア。
ためになるかもしれないし、ならないかもしれない。そこそこ更新してますそこそこ。

このブログについてもっと詳しく