スポンサーリンク
2013年09月30日
WordPressのメディアライブラリをなんとなく利用していましたが、仕組みをイマイチ把握していませんでしたので、少し調べて見ることにしました。 ドキュメント1の類で調べたわけではなく、実際に試してみたらこうなった程度の記録ですので、正確性にかけると思います。
画像サイズの設定方法は以下の2通りがあるようです。
サムネイルのサイズ
、中サイズ
、大サイズ
の3種類を設定できます。
“サムネイルのサイズ”は、設定値に合わせて縮小されます。“サムネイルを実寸法にトリミングする”をオンにした場合、切り抜き処理(クロッピング)が入り、縦横比はそのままに縮小され、設定値に合わせて中央部のみ切り抜かれます。(一部のサイトでは、縮小処理が入らずに中央部が切り抜かれるとありますが、私の環境では、縮小後に切り抜かれます。)
中サイズと大サイズは、縦横のどちらかが最大値になるように縦横比を維持したまま縮小されます。
元画像のサイズに依存するため、生成される画像のサイズはバラバラになります。例えば、幅を一致させるには高さを0にします。そうすることで、縦横比を保持したまま幅が設定値にそろった画像が生成されます。高さは幅の縮小率に合わせて縮小されます。
元の画像が、設定値以下のサイズだと画像ファイルは生成されません(拡大処理は行われません)。
cropをtrueにした場合、管理画面のメディア設定のサムネイルサイズと同様に、切り抜き処理が入ります。falseだと縦横比を無視して縮小します。
以下の6つの設定後に画像ファイルを追加します。
幅 | 高さ | |
---|---|---|
サムネイルのサイズ | 30 | 0 |
中サイズ | 90 | 0 |
大サイズ | 150 | 0 |
メディアライブラリに画像ファイル(coda2.png width=200px height=200px)追加すると、自動的に上記の設定が反映された6つのファイルが生成されます。
デフォルトの設定であれば、/wp-content/uploads/year/month/
に保存されます。
以下のコードで設定順に表示させみます。
the_post_thumbnail('thumbnail');
the_post_thumbnail('medium');
the_post_thumbnail('large');
the_post_thumbnail();
the_post_thumbnail(size01);
the_post_thumbnail(size02);
その他の取得方法
<img width="50" height="50" src="coda2-60x60.png">
となりwidthとheightでサイズが調整され表示されます。自動生成されるサムネイルは、メディアライブラリへ追加するときの設定が反映されます。ここが面倒?なのですが、サムネイルが生成されるのはオリジナルを追加した時のみです。また、追加時にサムネイルの情報が、MySQLデータベースのテーブルwp_postmeta
にある、meta_key
の_wp_attachment_metadata
に格納されます。
メディアライブラリへの追加時にのみ_wp_attachment_metadata
が作成され、それ以降は更新されません。つまり、画像ファイル追加後に設定を変更しても新しい画像は生成されませんし、少し語弊がありますが設定が反映されることもありません。
例えば、functions.phpの設定のみ変更した場合、
add_image_size('size01', 120, 0)を
add_image_size('size01', 60, 0)にした場合
the_post_thumbnail(size01)で取得すると、
表示される画像は追加時に生成された画像coda2-120x120.png
で、<img width="60" height="60" src="coda2-120x120.png">
となり、表示上は縮小されます。
登録時より一回り大きいadd_image_size('size01', 150, 0)
とすると、今度は何も変化せずに<img width="120" height="120" src="coda2-120x120.png">
とそのまま表示されます。登録時の設定以上のサイズは無効のようです。
set_post_thumbnail_size
でもメディア設定
でも同様で、小さい値にはwidthとheightプロパティで表示上は縮小されます。大きい値については、元のサイズ以上の設定は無視されます。
当たり前ですが、functions.phpで何も設定せずにメディアライブラリに画像coda2.pngを追加して、the_post_thumbnailで呼び出すとオリジナルが表示されます。
the_post_thumbnail();
the_post_thumbnail('size01');
the_post_thumbnail('size02');
上記は全て同じ結果になります。
そのままfuncions.php
で設定を追加すると
set_post_thumbnail_size(60, 0);
add_image_size('size01', 120, 0)
add_image_size('size02', 180, 0);
widthとheightで調整されたオリジナル画像が表示されます。
<img width="60" height="60" src="coda2.png">
<img width="120" height="120" src="coda2.png">
<img width="180" height="180" src="coda2.png">
画像サイズを変更する必要があれば、ファイル名を変更してメディアライブラリに登録する。または、プラグインの”Regenerate Thumbnails“を使えばいいかと思います。メディアライブラリ
> メディアを編集
> 画像を編集
でできそうなきもしましたが・・・
/wp-content/uploads/year/month/
から自動生成されたファイルを削除すると、単純にリンク切れになります。
メディアライブラリでファイルを削除するとサムネイルも一緒に削除されます。
アクセス時に設定サイズがなければ生成され、それ以降はそのファイルを使うという仕組みだと設定変更も気楽にできていいかなと思いますが、理解してしまえば現状の仕組みでも問題は無さそうです。ただ、管理画面ではサムネイルの存在がわからないのは少し面倒です。後から気楽に変更できないので、テーマの作成時にしっかり設計しないとダメですね。