この記事は最後に更新してから1年以上経過しています。

edit_custom_thumbnail_sizesフィルターを使ってみた

説明

アップロード済みの画像は、トリミングや回転、反転といった編集が可能である。6.0.0で追加されたedit_custom_thumbnail_sizesフィルターは、編集された内容を反映させるサイズを拡張するものだったので、さっそく使ってみた。

edit_custom_thumbnail_sizesフィルターを試す

edit_custom_thumbnail_sizesフィルターは、画像編集画面を出力するwp_image_editor関数で次のように記述されている。

$edit_custom_sizes = false;
/**
 * Filters whether custom sizes are available options for image editing.
 *
 * @since 6.0.0
 *
 * @param bool|string[] $edit_custom_sizes True if custom sizes can be edited or array of custom size names.
 */
$edit_custom_sizes = apply_filters( 'edit_custom_thumbnail_sizes', $edit_custom_sizes );

このフィルター関数で、trueまたはサイズ名の配列を返すことで編集結果の適用先が変わるとのことなので、まずは現テーマのfunctions.phpに次の記述を追加する。

add_filter( 'edit_custom_thumbnail_sizes', '__return_true' );

フィルターのコールバック関数として指定した'__return_true'は、返り値にtrueを返す定義済みの関数名である。この状態でメディアライブラリから適当な画像を選択し、その画像編集画面を表示させると、右下の「変更を適用:」のところが次のようになった。

画像編集画面(添付ファイルの詳細)の「変更を適用」の選択肢が追加された

標準では「すべての画像サイズ」「サムネイル」「サムネイル以外の全サイズ」の3つだが、ご覧の通り「medium」から「2048x2048」までが追加された(追加された選択肢が翻訳されていない問題はtracへ投稿済み)。

選択肢を変える

追加された選択肢がどのようなものなのか気になったので、実際にラジオボタンを出力しているところを確認した。上記では変数$edit_custom_sizesにtrueが格納されている場合、 get_intermediate_image_sizes関数の返り値が代入される。その内容は以下の通りで、赤字の部分はWordPressのバージョン、テーマやプラグインによって異なる。

array(6) {
  [0]=>
  string(9) "thumbnail"
  [1]=>
  string(6) "medium"
  [2]=>
  string(12) "medium_large"
  [3]=>
  string(5) "large"
  [4]=>
  string(9) "1536x1536"
  [5]=>
  string(9) "2048x2048"
}

これらの中で標準で選択肢に入っている「thumbnail(サムネイル)」は除外される。さらに編集中の画像が各縮小イメージを持っている場合のみ選択肢として追加されるようになっている。このような仕様により、選択肢として表示される項目は画像により違ってくる。

以上を踏まえedit_custom_thumbnail_sizesフィルターで選択肢(サイズ)を限定する場合は次のような記述となる。

function mytheme_edit_custom_sizes() {
	return array( 'large' );
}

add_filter( 'edit_custom_thumbnail_sizes', 'mytheme_edit_custom_sizes' );

これで選択肢は「large」のみ追加される。このコールバック関数で注意する点は、サイズが1つの場合でも配列で返すこと。文字列を返した場合、trueを返した場合と同じ結果になってしまうからだ。


6.0.0で追加されたedit_custom_thumbnail_sizesフィルターは、8年前(WordPress 4.0の頃)にtracへ投稿されたものが実装されたものである。8年はさすがに長すぎなのでは。。。


最終更新 : 2022年05月30日 16:26


お勧め

wp_get_current_user(2019年6月21日 更新)

WP_User wp_get_current_user( )
現在のユーザ情報を取得する。

sanitize_locale_name(2023年5月22日 更新)

string sanitize_locale_name( $locale_name )
ロケール名をサニタイズする。

the_custom_logo(2018年5月27日 更新)

void the_custom_logo( [ int $blog_id = 0 ] )
カスタムロゴを表示する。

wp_unslash(2016年4月22日 更新)

mixed wp_unslash( mixed $value )
スラッシュでクォートされた文字列のクォート部分を取り除く。

wp_embed_defaults(2011年12月1日 更新)

array wp_embed_defaults( )
投稿記事中に埋め込む動画などのサイズを取得する。