add_image_size () pour des types de publication spécifiques

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

Supposons que deux types de publication soient en jeu sur mon blog: publication, vidéo et produit. Je souhaiterai peut-être une taille d’image de 80x80 pour mes publications, mais de 100x100 pour mes vidéos et de 50x100 pour mes produits. À ma connaissance, je suis obligé de créer des vignettes pour mes images Post aux dimensions de 100x100 et 50x100. Et pour mes produits, je suis obligé de créer des vignettes 80x80 et 100x100, même si je ne les utiliserai jamais.

Existe-t-il un moyen de créer des tailles d’image basées sur des types de publication afin de ne pas créer un tas d’images que vous ne prévoyez pas d’utiliser et de gaspiller des ressources qui pourraient être utilisées ailleurs?

    
posée Sampson 26.11.2010 - 22:28

3 réponses

11

Il n’existe aucun moyen de baser les tailles d’image sur le type de publication, car les images ne sont pas encore attachées à une publication lorsque vous les téléchargez et que les tailles d’image intermédiaires sont créées (lorsque vous les ajoutez simplement via "Nouveau support", elles le sont). pas même attaché à aucun poste du tout).

Cependant, j'ai récemment créé deux plugins qui ensemble feront ce que vous voulez. Les images virtuelles intermédiaires intercepteront la création des tailles d'image intermédiaires: elles ne seront pas créées sur le disque, mais existent toujours dans le groupe de métadonnées. Cela fait penser à WordPress qu’ils existent afin que vous puissiez les utiliser comme des images normales. Le plug-in associé, Resizer à la demande , créera des tailles d'image manquantes à la demande. La première fois que l'image est demandée, elle est créée, toutes les demandes suivantes ne recevront que l'image nouvellement créée.

Ces plugins ont besoin d’une réécriture avant que je ne les mette dans le répertoire des plugins WordPress, mais ils devraient être sûrs. Ou au moins avez TODO des commentaires où ils ne sont pas sûrs.

    
réponse donnée Jan Fabry 26.11.2010 - 22:40
2

J'ai posté du code sur cet autre thread qui définit un transitoire avec le type de publication lors du téléchargement d'une image, puis vérifie la valeur de ce transitoire et ajuste la taille de la vignette lorsque le téléchargement est terminé. Ce n’est ni parfait ni à l'épreuve des balles, mais il devrait au moins démontrer le concept.

    
réponse donnée goldenapples 30.12.2010 - 00:41
0

Je suis venu avec la solution suivante. Il crée des images uniquement pour le type de publication personnalisé sans en créer d’autres. Le seul problème est que si vous utilisez des plugins comme des champs personnalisés avancés, lorsque vous essayez de restituer le champ de la galerie, il affiche uniquement les tailles d’images wordpress par défaut: 'vignette', 'moyen', '' grand '' et vous ne pouvez pas accéder aux tailles d’image de publication personnalisées créées. .

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

}

    
réponse donnée No0n 22.05.2014 - 19:16

Lire d'autres questions sur les étiquettes