add_image_size () pour des types de publication spécifiques

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

Supposons que deux types d'articles soient en ligne sur mon blog: Article, Vidéo et Produit. Je veux peut-être une taille d'image 80x80 pour mes publications, mais 100x100 pour mes vidéos et 50x100 pour mes produits. À ma connaissance, je suis obligé de créer des vignettes pour mes images Post dans les dimensions 100x100 et 50x100. Et pour mes produits, je suis obligé de créer des miniatures de 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 les 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?

Sampson
la source
J'ai rencontré exactement le même besoin.
MikeSchinkel
Que se passe-t-il si vous utilisez cette fonction image_resize dans le thème dans les parties où vous avez besoin de cette taille d'image?, Vous pouvez également écrire une fonction raccourcie pour plusieurs utilisations en fonction du contexte.
Cela me semble être un oubli évident, cela n'a-t-il vraiment pas encore été résolu?
Nathan Hornby

Réponses:

12

Il n'y a aucun moyen de baser les tailles d'image sur le type de publication, car les images ne sont pas encore jointes à une publication lorsque vous les téléchargez et les tailles d'image intermédiaires sont créées (lorsque vous les ajoutez simplement via "Nouveaux médias", elles ne sont même pas jointes à n'importe quel poste).

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

Ces plugins ont besoin d'une réécriture avant de les mettre dans le répertoire des plugins WordPress, mais ils devraient être sûrs. Ou au moins avoir des TODOcommentaires là où ils ne sont pas sûrs.

Jan Fabry
la source
Agréable!
MikeSchinkel
2

J'ai publié du code sur cet autre fil 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 miniature de la publication en conséquence lorsque le téléchargement est terminé. Ce n'est pas parfait ou à l'épreuve des balles, mais il devrait au moins démontrer le concept.

pommes dorées
la source
0

J'ai trouvé 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 rendre le champ de la galerie, il n'affiche que les tailles d'images wordpress par défaut: 'miniature', 'moyenne', 'grande' et vous ne pouvez pas accéder aux tailles d'image post personnalisé 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);
}

}

No0n
la source