Bildgrößen für benutzerdefinierten Post-Typ entfernen

Ich versuche dies ohne die Verwendung eines Plugins, aber Aktionen und Filter zu erreichen

Gibt es eine Möglichkeit, zusätzliche Bildgrößen zu entfernen, die von WordPress basierend auf dem benutzerdefinierten Beitragstyp generiert wurden? Ich habe versucht, mit dem intermediate_image_sizes_advanced Filter zu arbeiten, aber es sieht nicht so aus, als hätte es Zugriff auf $post oder post_type . Also benutze ich die function so:

 function filter_image_sizes($sizes) { global $post; global $post_type; if($post->post_type == 'cpt_slides' || $post_type == 'cpt_slides'){ unset( $sizes['thumbnail']); unset($sizes['medium']); unset( $sizes['large']); } return $sizes; } add_filter('intermediate_image_sizes_advanced', 'filter_image_sizes'); 

Die Begründung / Situation

Ich habe einen benutzerdefinierten Postfachtyp für Präsentationen (wie einen Bild-Slider) erstellt, der das ausgewählte Bild verwendet, um dem Benutzer das Hochladen von “Folien” zu ermöglichen. Ich habe auch ein paar benutzerdefinierte Bildgrößen, aber eine speziell für die Folien allein. Da die Folienbilder eine statische Größe haben, möchte ich nicht, dass WordPress all diese zusätzlichen Bildgrößen erzeugt, die ich nie verwenden werde, daher die Frage.

Solutions Collecting From Web of "Bildgrößen für benutzerdefinierten Post-Typ entfernen"

Möglicherweise sollte dieser Filter intermediate_image_sizes funktionieren

Hinweis: Diese Lösung funktioniert, wenn Sie ein Bild vom Post-Bearbeitungsbildschirm hochladen. (getestet auf localhost mit WP-3.8.1)

 add_filter( 'intermediate_image_sizes', 'ravs_slider_image_sizes', 999 ); function ravs_slider_image_sizes( $image_sizes ){ // size for slider $slider_image_sizes = array( 'your_image_size_1', 'your_image_size_2' ); // for ex: $slider_image_sizes = array( 'thumbnail', 'medium' ); // instead of unset sizes, return your custom size for slider image if( isset($_REQUEST['post_id']) && 'your_custom_post_type' === get_post_type( $_REQUEST['post_id'] ) ) return $slider_image_sizes; return $image_sizes; } 

Vielleicht könnten Sie dieses Plugin installieren: http://wordpress.org/plugins/simple-image-sizes/

Dieses Plugin kann Bildgrößen hinzufügen und die benutzerdefinierten Größen des Themas überschreiben. Dann können Sie sie regenerieren.

Ein Teil des Problems könnte darin bestehen, dass dieser Filter möglicherweise von mehr als einem Ort aufgerufen wird, oder möglicherweise von einem Ort, an dem kein Post mit der Anfrage verknüpft ist. Tatsächlich wird der verwendete Filter anscheinend nur verwendet, wenn der Anhang zuerst als Teil der Metadaten erstellt wird.

Ein paar Tests zeigen mir, dass beim Hochladen eines Bildes die Variablen $ post und $ post_type nicht an der Stelle gesetzt sind, an der dieser Filter verwendet wird. Wahrscheinlich geschieht dies, weil das Hochladen der Medien als Hintergrundprozess über Javascript erfolgt, anstatt ein Formular zu senden und die Seite neu zu laden.

WordPress ist nicht wirklich eingerichtet, um diese Art der Filterung zu handhaben, es ist vielleicht etwas, das für zukünftige Updates in Betracht gezogen werden sollte. Ich würde vorschlagen, ein Ticket für den WordPress Trac einzureichen und dort einen Rat zu holen.

Grundsätzlich speichert WordPress Ihre Medienelemente unabhängig von dem Post, an den sie angehängt sind, so dass Sie die gleiche Datei einfach an mehreren Stellen verwenden können. Wenn WordPress Ihnen erlauben würde, die Größen, die auf einer feineren Basis generiert werden, zu ändern, könnten Sie mit Situationen enden, in denen Sie ein Bild für einen Blogpost hochgeladen haben und dieses Bild dann woanders als vorgestellten Bild wiederverwenden wollten. Die Medienbibliothek ist so eingerichtet, dass sie diese Art von Dingen gut verarbeitet, aber es ist nicht eingerichtet, Miniaturansichten von Fall zu Fall neu zu erstellen. Es ist so eingerichtet, dass alle erforderlichen Miniaturansichten generiert werden, da Sie die Vorschaubilder anderswo verwenden können.

Der einfachste Weg, dies zu umgehen, wäre, beim Hochladen von Medien eine eigene Medien-Upload-function für die Metabox des benutzerdefinierten Beitragstyps zu verwenden. Auf diese Weise können Sie den normalen WordPress-Thumbnail-process umgehen und nur die gewünschten Größen beim Hochladen der Datei erstellen. Hier ist ein tolles Tutorial, das Ihnen dabei hilft: http://wp.utsplus.com/tutorials/attaching-files-to-your-posts-using-wordpress-custom-meta-boxes-part-1/