WordPressのメディア設定で、投稿タイプごとにメディアサイズを設定する方法をメモ。
サンプルコード
例として、デフォルトの投稿(post)とカスタム投稿(news)があるとします。
デフォルトの投稿では最初から設定されているthumbnail,medium,largeを、カスタム投稿ではnews_imgという名前でサイズを追加して使用する場合、functions.phpに以下のように記述します。
functions.php
// カスタム投稿(news)用に画像サイズ(news_img)を追加 add_image_size('news_img', 200, 200, true ); // 投稿タイプ別のメディアサイズの設定 function media_settings_by_post_type( $sizes ) { $type = get_post_type($_REQUEST['post_id']); foreach($sizes as $key => $value){ // 投稿タイプがpostで、画像がthumbnail,medium,large以外の場合 if( $type=='post' && ( $value != 'thumbnail' && $value != 'medium' && $value != 'large' ) ) { // 画像の追加設定から除外する unset($sizes[$key]); } // 投稿タイプがnewsで、画像がnews_img以外の場合 if($type=='news' && $value != 'news_img') { // 画像の追加設定から除外する unset($sizes[$key]); } } return $sizes; } add_action( 'intermediate_image_sizes', 'media_settings_by_post_type' );
9~12行目ではデフォルトの投稿でthumbnail,medium,large以外を除外しているため、デフォルトの投稿ではthumbnail,medium,largeのみ登録されるようになります。
15~18行目ではカスタム投稿でnews_img以外を除外しているため、カスタム投稿ではnews_imgのみ登録されるようになります。
メディアや固定ページから登録を行う場合、いずれにも該当しないため設定しているすべてのサイズで画像パターンが生成されます。
【参考サイト】
コメントが承認されるまで時間がかかります。