web-dev-qa-db-fra.com

Comment obtenir toutes les tailles d'images en vedette et leurs URL?

Existe-t-il un moyen standard d’obtenir toutes les tailles enregistrées des images présentées? On peut enregistrer différentes tailles avec add_image_size(). Ce dont j'ai besoin, c'est d'obtenir toutes les tailles d'une image sélectionnée d'un message. Quelque chose comme ça:

$ tailles = get_post_feature_image_sizes ($ postid);

... qui retournera un tableau d'objets comme celui-ci (ici au format JSON):

[
{width: 200, height: 300, url: 'http://.........../wp-content/uploads/2015/10/file-200x300.jpg'},
{width: 300, height: 400, url: 'http://.........../wp-content/uploads/2015/10/file.jpg'},
]

Est-ce qu'il y a quelque chose comme ça, ou je vais devoir scanner tous les noms de fichiers du dossier de téléchargement avec regex?

5
NoOne

Je ne me souviens pas d'une fonction qui ferait précisément cela, mais elle est facilement réalisée avec l'API globale:

  1. Récupérer l'ID de pièce jointe avec get_post_thumbnail_id()
  2. Récupérez les tailles disponibles avec get_intermediate_image_sizes()
  3. Pour chaque taille, utilisez wp_get_attachment_image_src() , qui fournit précisément les données dont vous avez besoin (URL et dimensions).
7
Rarst

Une fois que vous avez obtenu son ID ( get_post_thumbnail_id ($ YOUR_POST_ID)} _ ), vous devez connaître l'URL de la base de téléchargement et les métadonnées de la pièce jointe.

(URL de base de téléchargement) peut être trouvé dans un tableau retourné par wp_upload_dir () .

Métadonnées de pièce jointe peuvent être récupérés par wp_get_attachment_metadata () _ .

Voici une fonction pratique que j'ai écrite qui prépare les données d'URL pour toute pièce jointe d'image, pas seulement celle qui est en vedette.

function prepareImageData( $attachment_id ){
  $uploads_baseurl = wp_upload_dir()['baseurl'];

  $prepared = [];
  $data = wp_get_attachment_metadata($attachment_id);
  $prepared = [
    'mime_type' => get_post_mime_type($attachment_id),
    'url' => $uploads_baseurl.'/'.$data['file'],
    'sizes' => [],
  ];

  foreach( $data['sizes'] as $size => $sizeInfo ){
    $prepared['sizes'][$size] = [
      'url' => $uploads_baseurl.'/'.$sizeInfo['file'],
    ];
  }

  return $prepared;
}
0
jave.web

Pour obtenir une image en fonction de sa taille, vous pouvez utiliser la fonction prédéfinie wordpress qui est the_post_thumbnail( $size, $attr ).

vous pouvez utiliser des formats de support prédéfinis.

the_post_thumbnail();                 

the_post_thumbnail( 'thumbnail' );       // Thumbnail (default 150px x 150px max)
the_post_thumbnail( 'medium' );          // Medium resolution (default 300px x 300px max)
the_post_thumbnail( 'large' );           // Large resolution (default 640px x 640px max)
the_post_thumbnail( 'full' );            // Full resolution (original size uploaded)

the_post_thumbnail( array(100, 100) );

Cela pourrait vous aider.

0
Ajay Khandal