Bildgrößenfilterung im Medien-Uploader nach benutzerdefiniertem Post-Typ

Ich habe drei verschiedene benutzerdefinierte Post-Typen, für die ein Bild-Upload auf der Admin-Post-Bearbeitungsseite erforderlich ist.

Jeder Typ hat seine eigene Bildgrößeneinstellung. Sagen wir:

  • ‘news’ type => Bildgröße erforderlich: 700x320px
  • ‘Arbeit’ Typ => Bildgröße erforderlich: 700x430px
  • ‘Presse’ Typ => Bildgröße erforderlich: 460x600px

Es ist mir gelungen, die Standardeinstellungen für die Bildgröße zu entfernen und diese 3 neuen im Media Uploader hinzuzufügen, aber ich brauche sie nicht als Radioknöpfe anzuzeigen, da ich nicht möchte, dass die Benutzer irgendetwas in Bezug auf die Größen auswählen Bilder hochladen

Stattdessen möchte ich, dass der Media Uploader die genaue Einstellung der Bildgröße entsprechend dem benutzerdefinierten Typ des aktuellen Posts ohne Benutzereingriff direkt einstellt.

Ist das möglich?

Ich habe versucht, den post_type aus dem Media Uploader Iframe abzufragen, aber es gibt mir bestenfalls den Post-Typ “attachment” (was sinnvoll ist, da es der Post-Typ des Bildes ist, das hochgeladen werden soll), während ich versuche, den benutzerdefinierten Typ zu erhalten der Post, die ich gerade veröffentlichen werde.

Und wenn ich den benutzerdefinierten Typ des Posts nicht erhalten kann, kann ich nicht sehen, wie ich den Media Uploader dazu bringen kann, die Größe entsprechend einzustellen.

Ich weiß einfach nicht, wie ich es zum Laufen bringen kann. Jede Hilfe wäre willkommen.

Hier ist mein Skript so weit:

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' ); 

Vielen Dank.

Solutions Collecting From Web of "Bildgrößenfilterung im Medien-Uploader nach benutzerdefiniertem Post-Typ"

Fügen Sie folgenden Code in Ihre themes functions.php Datei ein

 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' );