WordPressで投稿タイプ別にアップロードするメディアサイズを設定する

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のみ登録されるようになります。
メディアや固定ページから登録を行う場合、いずれにも該当しないため設定しているすべてのサイズで画像パターンが生成されます。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

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

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930