add_image_size () für bestimmte Beitragstypen

18
set_post_thumbnail_size( 80, 80, true ); // true for all post types

Angenommen, ich habe zwei Post-Typen in meinem Blog im Spiel: Post, Video und Produkt. Ich möchte möglicherweise eine Bildgröße von 80 x 80 für meine Posts, aber 100 x 100 für meine Videos und 50 x 100 für meine Produkte. Meines Wissens nach bin ich gezwungen, Thumbnails für meine Post-Bilder in den Maßen 100x100 und 50x100 zu erstellen. Und für meine Produkte muss ich Miniaturansichten mit den Maßen 80 x 80 und 100 x 100 erstellen, obwohl ich diese nie verwenden werde.

Gibt es eine Möglichkeit, Bildgrößen zu erstellen, die auf Beitragstypen basieren, damit Sie nicht eine Reihe von Bildern erstellen, die Sie nicht verwenden möchten, und Ressourcen verschwenden, die an anderer Stelle verwendet werden könnten?

Sampson
quelle
Ich habe genau das gleiche Bedürfnis.
MikeSchinkel
Was passiert, wenn Sie diese Funktion image_resize im Thema in den Teilen verwenden, in denen Sie diese Bildgröße benötigen? Sie können je nach Kontext auch eine Kurzfunktion für mehrere Zwecke schreiben.
Scheint mir ein offensichtliches Versehen zu sein, wurde das wirklich noch nicht angesprochen?
Nathan Hornby

Antworten:

12

Es gibt keine Möglichkeit, die Bildgrößen auf den Beitragstyp abzustimmen, da Bilder noch nicht an einen Beitrag angehängt sind, wenn Sie sie hochladen, und die Zwischenbildgrößen erstellt werden (wenn Sie sie einfach über "Neue Medien" hinzufügen, werden sie nicht einmal angehängt zu irgendeinem Beitrag überhaupt).

Vor kurzem habe ich jedoch zwei Plugins erstellt , die zusammen das tun, was Sie wollen. Virtuelle Zwischenbilder unterbrechen die Erstellung der Zwischenbildgrößen: Sie werden nicht auf der Festplatte erstellt, befinden sich jedoch noch im Metadaten-Array. Dies lässt WordPress denken, dass sie existieren, so dass Sie sie wie normale Bilder verwenden können. Das Companion-Plugin On-Demand Resizer erstellt fehlende Bildgrößen, wenn sie angefordert werden. Wenn das Image zum ersten Mal angefordert und erstellt wird, wird allen nachfolgenden Anforderungen nur das neu erstellte Image zugestellt.

Diese Plugins müssen neu geschrieben werden, bevor ich sie in das WordPress-Plugin-Verzeichnis lege, aber sie sollten sicher sein. Oder zumindest TODOKommentare, bei denen sie unsicher sind.

Jan Fabry
quelle
Nett!
MikeSchinkel
2

Ich habe in diesem anderen Thread einen Code gepostet, der beim Hochladen eines Bildes eine Überblendung mit dem Post-Typ festlegt, dann den Wert dieser Überblendung überprüft und die Größe der Post-Thumbnails nach Abschluss des Uploads entsprechend anpasst. Es ist nicht perfekt oder kugelsicher, aber es sollte zumindest das Konzept demonstrieren.

goldenapples
quelle
0

Ich habe die folgende Lösung gefunden. Es werden nur Bilder für benutzerdefinierte Beitragstypen erstellt, ohne dass zusätzliche erstellt werden. Das einzige Problem ist, dass wenn Sie Plugins wie erweiterte benutzerdefinierte Felder verwenden und versuchen, das Galeriefeld zu rendern, nur die Standardgrößen für WordPress-Bilder angezeigt werden: 'Thumbnail', 'Medium', 'Large' und Sie können nicht auf benutzerdefinierte Post-Bildgrößen zugreifen, die erstellt wurden .

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

No0n
quelle