Lister les tailles des images disponibles : Pour les devs

Lister les tailles des images disponibles : Pour les devs

Dans WordPress, il existe nativement 3 tailles d’images nommées « thumbnail« , « medium« , et « large« . Vous avez la possibilité d’en ajouter via du code avec la fonction add_image_size() ou via un plugin comme Simple Image Sizes de mon ami @Raherian.

MAIS je n’ai pas trouvé de fonction permettant de me retourner le liste de ces tailles, avec leur nom, taille et information sur le cropping ou non.

L’existant

Il existe bien la fonction get_intermediate_image_sizes() mais elle ne retourne que les noms des tailles ! Je l’aurais plutôt appelée get_intermediate_image_sizes_names()

Il existe aussi la variable globale $_wp_additional_image_sizes mais elle ne retourne que les tailles d’images ajoutés et non les natives.

En fait, les natives sont des options, il y a 7 options qui sont 3 fois width et height + 1 pour le crop de la thumbnail. Greg me dit que si on crée les options de crop pour medium et large, ça fonctionne !

Ma façon

J’ai alors récemment créé une petite fonction sympa qui permets de récupérer le détail des tailles des images disponibles sur votre installation, voire une taille précise :

Please refresh the page to continue...

Démo

var_dump( get_image_sizes() );
/*
array(4) {
  ["thumbnail"]=>
  array(3) {
    ["width"]=>
    int(150)
    ["height"]=>
    int(150)
    ["crop"]=>
    bool(true)
  }
  ["medium"]=>
  array(3) {
    ["width"]=>
    int(300)
    ["height"]=>
    int(300)
    ["crop"]=>
    bool(false)
  }
  ["large"]=>
  array(3) {
    ["width"]=>
    int(1024)
    ["height"]=>
    int(1024)
    ["crop"]=>
    bool(false)
  }
  ["juliobox-size"]=>
  array(3) {
    ["width"]=>
    int(211)
    ["height"]=>
    int(279)
    ["crop"]=>
    bool(false)
  }
}
*/
var_dump( get_image_sizes( 'large' ) );
/*
array(3) {
  ["width"]=>
  int(1024)
  ["height"]=>
  int(1024)
  ["crop"]=>
  bool(false)
}
*/
var_dump( get_image_sizes( 'foo-bar' ) );
/*
bool(false)
*/

Pourquoi WordPress n’a pas ça ? Car il n’en a pas besoin, moi si, et vous ?

Lire la suite

Vous aimez ? Partagez !

Abonnement gratuit à 0€


8 thoughts on “Lister les tailles des images disponibles : Pour les devs”

  • 1
    Julien Maury on 5 juillet 2014 Répondre
    Salut,

    Les variables pseudo-privées peuvent bouger dans les prochaine versions de WordPress non? c’est le principe des toutes ces vars avec un underscore ? A priori ce n’est pas la bonne pratique de les utiliser directement.

    • 2
      Julio Potier on 5 juillet 2014
      Oui, potentiellement. Celle-ci est là depuis décembre 2009 et n’a pas bougé. Je ne me fais pas peur là de-dessus. Au pire je follow chaque commit dans le core et je lis les tickets, je vois le truc arriver :)
  • 3
    lipaonline on 7 juillet 2014 Répondre
    Tu devrais peut être caster les tailles aussi non ? Je vois que tantôt c’est des strings tantôt des int…
    • 4
      Julio Potier on 7 juillet 2014
      Voilà qui est fait, merci !
  • 5
    @BernardG on 7 juillet 2014 Répondre
    Bonjour,

    Pour ma part je supprime systématiquement toutes les tailles intermédiaires. En effet si l’on en n’a pas besoin cela prend de la place sur le serveur hébergeur.

    Mais merci néanmoins pour ce bout de code.

    • 6
      Julio Potier on 7 juillet 2014
      Hello

      Ha oui j’aurais pû aussi parler de ça, tu peux nous indiquer ta technique pour ne pas avoir la taille « medium » par exemple ?

      Merci !

    • 7
      @BernardG on 8 juillet 2014
      Bonjour Julio,

      Jusque maintenant j’applique un filtre à partir d’une fonction qui détruit les différents formats.
      Mais si je me trompe j’espère que le spécialiste que tu es, va corriger mes erreurs.

    • 8
      Julio Potier on 8 juillet 2014
      Ça me semble plutôt bien, je me demande presque si je ne devrais pas mettre ce hook dans ma fonction, mais j’ai peur quand même. Si une personne a utilisé le hook pour autre chose, je lui ajoute aussi les tailles natives, pas sûr que ça plaise d’un coup.
      Merci :

Laisser un commentaire

Avant de parler, merci de lire la charte des commentaires.

Utiliser le tag [php][/php] pour ajouter du code ou utilisez un service comme pastebin.com.
Cibler un commentateur avec un "@", merci à Mention Comments Authors !