この記事は最後に更新してから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_sizestrueが格納されている場合、 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_upload_dir(2018年5月27日 更新)

array wp_upload_dir( [ string $time = null [ , bool $create_dir = true [ , bool $refresh_cache = false ] ] ] )
アップロードディレクトリ(パス名)を取得する。

wp_get_development_mode(2023年8月10日 更新)

string wp_get_development_mode()
現在の開発モードを取得する。

build_query(2024年7月3日 更新)

string build_query( array $data )
連想配列からページ用のクエリー文字列を作る。

wp_get_list_item_separator(2022年5月31日 更新)

string wp_get_list_item_separator()
ロケールに応じたリスト項目の区切り文字を取得する。

get_current_blog_id(2017年3月24日 更新)

int get_current_blog_id()
現在のブログIDを取得する。