WordPressのアイキャッチ画像のサイズを追加するadd_image_sizeでWordPressのアイキャッチ画像のサイズ追加について紹介しました。その中で出てきたアイキャッチ画像を表示するときに使うthe_post_thumbnail()に標準でサイズ指定されている「post-thumbnail」のサイズ変更とプラグインなどで指定されるアイキャッチ画像のサイズを削除する方法を紹介します。
アイキャッチ画像のサイズを変更する
「post-thumbnail」サイズは、初期状態では、width・heightともに0が指定されています。この「post-thumbnail」を変更するには、set_post_thumbnail_size()を使用します。
set_post_thumbnail_size()の仕様
set_post_thumbnail_size( $width, $height, $crop );
引数名 | 型 | 説明 | デフォルト | 必須 |
---|---|---|---|---|
$width | int | 画像の横幅 (画像のピクセル数で指定) | 0 | |
$height | int | 画像の縦幅 (画像のピクセル数で指定) | 0 | |
$crop | boolean or array | 画像の切り抜きを行うか否か | false |
set_post_thumbnail_size()は、add_image_size()に$nameだけない引数の仕様になっていています。それもそのはずset_post_thumbnail_size()は内部でadd_image_size()の$nameに「post-thumbnail」が初期状態でセットしてあり、set_post_thumbnail_size()で指定した引数をセットしてadd_image_size()を動かすような形になっているからです。
/**
* Registers an image size for the post thumbnail.
*
* @since 2.9.0
*
* @see add_image_size() for details on cropping behavior.
*
* @param int $width Image width in pixels.
* @param int $height Image height in pixels.
* @param bool|array $crop Optional. Whether to crop images to specified height and width or resize.
* An array can specify positioning of the crop area. Default false.
*/
function set_post_thumbnail_size( $width = 0, $height = 0, $crop = false ) {
add_image_size( 'post-thumbnail', $width, $height, $crop );
}
set_post_thumbnail_size()の使い方
set_post_thumbnail_size()を使ったアイキャッチ画像のサイズ変更は以下の通りです。サンプルコードはWordPress › Twenty Fifteen « Free WordPress Themesのfunctions.phpに入っているものです。
/*
* Enable support for Post Thumbnails on posts and pages.
*
* See: https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
*/
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 825, 510, true );
set_post_thumbnail_size()を使うためには、add_image_size()のときと同様にadd_theme_support( ‘post-thumbnails’ )が必要になります。add_theme_support( ‘post-thumbnails’ )がないとset_post_thumbnail_size()が動きません。
アイキャッチ画像のサイズを削除する
WordPressの不要なアイキャッチ画像のサイズを削除するには、remove_image_size()を使います。remove_image_size()は、WordPress 3.9から用意された関数で今までは、セットしてあるアイキャッチ画像のサイズを拾ってきてunset()を使う以外にありませんでした。
remove_image_size()の仕様
remove_image_size( $name );
引数名 | 型 | 説明 | デフォルト | 必須 |
---|---|---|---|---|
$name | string | 削除したいアイキャッチ画像のサイズ名 | None | ○ |
/* 削除する使い方 */
function remove_thumbnail_size() {
remove_image_size( 'list-thumbnail' );
}
add_action( 'init', 'remove_thumbnail_size' );
/* セットしてあるアイキャッチ画像のサイズを変更するやり方 */
function update_thumbnail_size() {
remove_thumbnail_size( 'yarpp-thumbnail' );
add_image_size( 'yarpp-thumbnail', 200, 200, true );
}
add_action( 'init', 'update_thumbnail_size' );
サンプルコードの上のほうは、add_image_size()で設定されたアイキャッチ画像のサイズを削除しただけです。
下のほうは、Yet Another Related Posts Plugin (通称 YARPP)で関連記事のアイキャッチ画像のサイズを変更する方法を載せてみました。やり方としては、remove_image_size()でYARPPに設定してあるアイキャッチ画像のサイズを削除して新たに同じアイキャッチ画像のサイズ名でadd_image_size()を設定してます。
まとめ
set_post_thumbnail_size()やremove_image_size()は、add_image_size()と合わせてテーマにおけるアイキャッチ画像のサイズ調整を行うのによく使います。特にremove_image_size()でしっかりと設定しておけば、画像のアップロード時に無駄なアイキャッチ画像を生成しなくなるので動作にも影響します。乱用すれば必要なところに表示されないといった事態にもなりかねないので必要なアイキャッチ画像のサイズはしっかり調べて使ってください。