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_reset_postdata(2014年11月16日 更新)

void wp_reset_postdata( )
投稿記事をリセットする。

excerpt_remove_blocks(2022年2月8日 更新)

string excerpt_remove_blocks( string $content )
コンテンツ内の抜粋に適したブロックをレンダリングする。

wp_set_comment_status(2013年9月6日 更新)

mixed wp_set_comment_status( int $comment_id, string $comment_status [ , bool $wp_error = false ] )
コメントのステータスを設定する。

wp_is_site_protected_by_basic_auth(2021年2月5日 更新)

bool wp_is_site_protected_by_basic_auth( [ string $context = '' ] )
サイトがベーシック認証で保護されているか調べる。

send_origin_headers(2018年5月27日 更新)

mixed send_origin_headers()
リクエスト元に応じてAccess-Control-Allow-Originヘッダーを送信する。