wordpress アイキャッチ画像や「メディアを追加」で生成されるサムネイル

2013年7月4日

アイキャッチ画像の設定や「メディアを追加」(本文に挿入するしないに関わらず)を行うと、「設定」→「メディア」ページで設定した基本サイズ(thumbnail,medium,large)、「set_post_thumbnail_size()」で指定したサイズ(post_thumbnail)、及び add_image_size() で指定したサイズのサムネイルが自動的に生成される。

カスタム投稿タイプごとに異なるサムネイルサイズが必要な場合、仮に下記のような設定を functions.php に記述した場合、下記で指定した6種類のサイズのサムネイル及び基本サイズのサムネイルが自動的に生成される。

add_theme_support('post-thumbnails');
set_post_thumbnail_size(160, 160);
add_image_size('works_l', 360, 540);
add_image_size('works_m', 300, 450);
add_image_size('works_s', 80, 80, true);
add_image_size('news_s', 120, 120);
add_image_size('news_m', 280, 280);

これでは、アップロードフォルダに使用しない多数のサムネイルが存在してしまうので、カスタム投稿タイプごとにサムネイルのサイズを指定できないか、調べてみたが、現時点ではおそらく「できない」ということらしい。

理由:メディアライブラリにファイルをアップロードする場合、画像は投稿や投稿タイプに関連付けされていないため、その時点で投稿タイプに関連付けてサイズを変更することはできない。


To answer your question, currently (Version 3.4.1) it is not possible. And the reason is simple: If you upload a file to your media library your image is not related to any post nor even a post_type, so wordpress cannot know, that this file has to be resized into a different format.

http://stackoverflow.com/questions/

add_action などで is_singular(‘works’) を使ってできないか試してみたが、どれもうまくいかなかったのは上記の理由によるものだと思う。

現在考えられる対処:

  • 開発段階で、上記のように複数のサムネイルサイズが必要な場合、ページを作成する際に、不要なサイズをコメントアウトしておいて、画像をアップロードする。また、その際「設定」→「メディア」ページの基本サイズもすべて「0」にしておく。
    add_theme_support('post-thumbnails');
    set_post_thumbnail_size(160, 160);
    //add_image_size('works_l', 360, 540);
    //add_image_size('works_m', 300, 450);
    //add_image_size('works_recent', 220, 330);
    //add_image_size('works_s', 80, 80, true);
    add_image_size('news_s', 120, 120);
    add_image_size('news_m', 280, 280);
  • 後から不要なサムネイルを手動で削除する。(これはとても手間がかかる。)
  • 諦めて、そのままにする。
  • まだ、試していないが、使用されていないサムネイルを削除する「DNUI Delete not used image」のようなプラグインもある。

メディア(画像)の削除

「メディアライブラリ」やそれぞれのページの編集画面から「メディアの追加」→「メディアを挿入」の画面で削除する画像を選択して「完全に削除する」をクリックすると画像を削除することができる。

まとまった画像を削除する場合は「メディアライブラリ」で、削除する画像にチェックをつけて「一括操作」で「完全に削除する」を選択し「適用」をクリックするとまとめて削除できる。但し確認のポップアップ等はないので慎重に。

また、それぞれのページの編集画面からの場合、プルダウンから「この投稿へのアップロード」を選択すると、そのページにアップロードした画像が表示されるので、そこから選択することも可能。

  • 削除される画像は functions.php に記述した add_image_size で指定したサイズのサムネイル及び基本サイズで指定したサムネイルも含まれる。
  • 例えば、以下のような設定で、メディアをアップロードした場合、6種類のサムネイルが生成されるが
    add_theme_support('post-thumbnails');
    set_post_thumbnail_size(160, 160);
    add_image_size('works_l', 360, 540);
    add_image_size('works_m', 300, 450);
    add_image_size('works_s', 80, 80, true);
    add_image_size('news_s', 120, 120);
    add_image_size('news_m', 280, 280);
  • それを以下のように書き換えた後で、メディアを削除すると、
    add_theme_support('post-thumbnails');
    set_post_thumbnail_size(160, 160);
    //add_image_size('works_l', 360, 540);
    //add_image_size('works_m', 300, 450);
    //add_image_size('works_recent', 220, 330);
    //add_image_size('works_s', 80, 80, true);
    add_image_size('news_s', 120, 120);
    add_image_size('news_m', 280, 280);

    コメントアウトしてある4つのサムネイルは削除されず、そのまま残ってしまう。

また、「公開日時」を何らかの理由で変更した場合、メディアを再設定(削除してアップロードなど)したりすると、年や月が異なっている場合、変更した日時の「年」と「月」に対応するアップロードフォルダに保存される。