WordPressで追加した画像サイズを本文に挿入できるようにする

WordPressで生成される画像サイズを追加する方法については、画像アップロードで作成される画像の種類を追加するにてご紹介しましたが、これだけだと本文に画像を追加する際のサイズの選択肢に表示されません。

今回は、さらに一歩進めてサイズを追加するとともに、挿入するサイズとして選択できるようにしてみました。

と、盛大な前振りの割には大したことをしなくても実現可能で、3.3から追加されている image_size_names_choose というフィルターフックで、サイズを配列のキー、選択肢として表示されるラベル名を配列の値として追加すれば簡単にサイズの選択肢に表示されるようになります。

ただし、add_image_size と image_size_names_choose へのフックを別々に記述していたりすると、修正した際にミスをしたり、選択肢として表示したい/したくないを統一的に管理できた方が利便性が良いので、add_image_size をする際の記述についても工夫してみたいと思います。

CODE 1

function add_custom_image_sizes() {
	global $my_custom_image_sizes;
	$my_custom_image_sizes = array(
		'x-small' => array(
			'name'       => '極小', // 選択肢のラベル名
			'width'      => 30,    // 最大画像幅
			'height'     => 30,    // 最大画像高さ
			'crop'       => true,  // 切り抜きを行うかどうか
			'selectable' => true   // 選択肢に含めるかどうか
		),
		'x-large' => array(
			'name'       => '極大',
			'width'      => 1000,
			'height'     => 1000,
			'crop'       => false,
			'selectable' => false
		),
	);
	foreach ( $my_custom_image_sizes as $slug => $size ) {
		add_image_size( $slug, $size['width'], $size['height'], $size['crop'] );
	}
}
add_action( 'after_setup_theme', 'add_custom_image_sizes' );

CODE 1 では、x-smallとx-largeの2サイズとグローバル変数の $my_custom_image_sizes に定義し、これを用いて add_image_sizeを行っていますが、add_image_size で指定しているパラメーター以外にもラベルとして表示する name と 選択可能とするかどうかを決める selectable の2つを定義します。

CODE 2

function add_custom_image_size_select( $size_names ) {
	global $my_custom_image_sizes;
	$custom_sizes = get_intermediate_image_sizes();
	foreach ( $custom_sizes as $custom_size ) {
		if ( isset( $my_custom_image_sizes[$custom_size]['selectable'] ) && $my_custom_image_sizes[$custom_size]['selectable'] ) {
			$size_names[$custom_size] = $my_custom_image_sizes[$custom_size]['name'];
		}
	}
	return $size_names;
}
add_filter( 'image_size_names_choose', 'add_custom_image_size_select' );

CODE 2 では、image_size_names_choose フックを通じて選択可能な画像サイズを追加しています。 get_intermediate_image_sizes 関数を使用すると、add_image_size で追加した画像サイズを取得できるので(テーマがサポートしている場合は、アイキャッチ画像のpost_thumbnailも)、これをループして、CODE 1で定義した$my_custom_image_sizes変数の内容と比較し、selectableパラメーターで選択可能としている場合、$size_namesの配列にサイズとラベルを追加しています。

これをテーマのfunctions.phpに記述すれば、このとおり selectable を true として定義した極小の画像サイズのみ選択可能となりました。

「WordPressで追加した画像サイズを本文に挿入できるようにする」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です