Фильтрация размера изображения в загрузчике мультимедиа в соответствии с типом пользовательского сообщения

У меня есть три разных пользовательских типа сообщений, которые требуют загрузки изображения на странице редактирования сообщения администратора.

Каждый тип имеет собственную настройку размера изображения. Предположим:

  • 'news' type => требуется размер изображения: 700x320px
  • 'work' type => Требуется размер изображения: 700x430px
  • 'press' type => требуется размер изображения: 460x600px

Мне удалось удалить настройки размера изображения по умолчанию и добавить эти 3 новых в Media Uploader, но мне не нужно, чтобы они отображались как переключатели вообще, поскольку я не хочу, чтобы пользователи выбирали что-либо относительно размеров, когда загрузка изображений.

Вместо этого я хочу, чтобы Media Uploader установил точное значение размера изображения в соответствии с пользовательским типом фактического сообщения без какого-либо вмешательства пользователя.

Это возможно?

Я попытался запросить post_type из Media Uploader Iframe, но он дает мне в лучшем случае тип записи «вложения» (что имеет смысл, поскольку это тип публикации изображения, который он пытается загрузить), в то время как я пытаюсь получить настраиваемый тип почты, которую я собираюсь опубликовать.

И если я не могу получить персонализированный тип сообщения, я не вижу, как я могу заставить Media Uploader установить размер соответственно.

Я просто не знаю, как заставить его работать. Любая помощь будет оценена по достоинству.

Вот мой сценарий:

function media_image_delete_sizes($sizes) { unset($sizes['thumbnail']); unset($sizes['medium']); unset($sizes['large']); return $sizes; } add_filter('image_size_names_choose', 'media_image_delete_sizes'); add_image_size( 'news-size' , 700, 320,true); add_image_size( 'work-size' , 700, 430,true); add_image_size( 'press-size', 460, 600,true); function media_image_add_sizes($sizes) { // I would like not to show any of these new image sizes // (I will probably hide them via css or jQuery) $addsizes = array( "news-size" => "News (700x320)", "work-size" => "Works (700x430)", "press-size" => "Press (460x600)" ); $newsizes = array_merge($sizes, $addsizes); return $newsizes; } add_filter('image_size_names_choose', 'media_image_add_sizes'); function theme_default_image_size() { //This variable will retrieve the post_type of the picture post, not the one of the //underlying CPT post global $post_type; // Here is the place where I tried to place the conditional return // but I just can't succeed in retrieving the CPT post_type as I always get "attachment". if ($post_type == "news" ){ return 'news-size';} elseif ($post_type == "work" ){ return 'work-size';} elseif ($post_type == "press"){ return 'press-size';} else { return 'this-doesnt-work';}; } add_filter( 'pre_option_image_default_size', 'theme_default_image_size' ); 

Спасибо.

Solutions Collecting From Web of "Фильтрация размера изображения в загрузчике мультимедиа в соответствии с типом пользовательского сообщения"

Добавьте следующий код в свои темы: файл functions.php

 function theme_set_default_image_size() { global $post_type; $custom_image_size = 'medium'; if($post_type == 'news') $custom_image_size = 'news_image_size'; else if($post_type == 'product') $custom_image_size = 'product_image_size'; else if($post_type == 'service') $custom_image_size = 'service_image_size'; return $custom_image_size; } add_filter( 'pre_option_image_default_size', 'theme_set_default_image_size' );