Come ottenere tutte le dimensioni e gli URL delle immagini in evidenza?

25 ott 2015, 14:05:41
Visualizzazioni: 33.2K
Voti: 14

Esiste un modo standard per ottenere tutte le dimensioni registrate delle immagini in evidenza? Si possono registrare diverse dimensioni con add_image_size(). Ho bisogno di ottenere tutte le dimensioni di un'immagine in evidenza di un post. Qualcosa del genere:

$sizes = get_post_feature_image_sizes($postid);

...che restituirà un array di oggetti come questo (qui in formato 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'},
]

Esiste qualcosa di simile, o dovrò scansionare tutti i nomi dei file nella cartella upload con regex?

1
Commenti

L'immagine in evidenza è semplicemente l'ID di un allegato, tutte le API standard per gli allegati dovrebbero funzionare su di essa

Tom J Nowell Tom J Nowell
25 ott 2015 16:23:40
Tutte le risposte alla domanda 3
3
16

Non ricordo una funzione che faccia esattamente questo, ma è facilmente ottenibile con l'API complessivamente:

  1. Recupera l'ID dell'allegato con get_post_thumbnail_id()
  2. Recupera le dimensioni disponibili con get_intermediate_image_sizes()
  3. Per ogni dimensione usa wp_get_attachment_image_src(), che fornisce esattamente i dati di cui hai bisogno (URL e dimensioni).
25 ott 2015 19:39:50
Commenti

Grazie, è stato molto utile! :) Questa è la mia prima volta che sviluppo con WP e l'API e la terminologia è un po' spaventosa. :)

NoOne NoOne
26 ott 2015 16:40:13

esiste un modo per recuperare le dimensioni, larghezza e altezza, generate dall'immagine in evidenza del post corrente. Ad esempio, se l'immagine in evidenza impostata ha dimensioni 540 x 400, nonostante dovrebbe essere 550 x 550. Come recuperare le dimensioni dell'immagine in evidenza del post corrente per memorizzare $width = 540 & $height = 400 nell'esempio corrente.

Nimesh Nimesh
7 mag 2018 01:51:14

@Nimesh wp_get_attachment_metadata($attachment_id) ti darà ciò che ti serve.

jave.web jave.web
28 set 2018 21:00:59
1

Dopo aver ottenuto il suo ID ( get_post_thumbnail_id($YOUR_POST_ID) ) è necessario conoscere l'URL base della directory degli upload e i metadati dell'allegato.

L'URL base degli upload può essere trovato in un array restituito da wp_upload_dir().

I metadati dell'allegato possono essere recuperati con wp_get_attachment_metadata().

Ecco una pratica funzione che ho scritto per preparare i dati dell'URL per qualsiasi allegato immagine, non solo quelle in evidenza.

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;
}
28 set 2018 20:59:52
Commenti

ottimo! Potresti anche aggiungere $dir = pathinfo( $data['file'] )['dirname']; da usare come: 'url' => $uploads_baseurl.'/'.$dir.'/'.$sizeInfo['file'], in quanto potrebbero mancare le directory anno/mese

Ramon Fincken Ramon Fincken
11 feb 2021 16:51:01
1

Per ottenere un'immagine secondo le dimensioni puoi utilizzare la funzione predefinita di WordPress the_post_thumbnail( $size, $attr ).

Puoi utilizzare le dimensioni predefinite dei media.

the_post_thumbnail();                 

the_post_thumbnail( 'thumbnail' );       // Thumbnail (predefinito 150px x 150px max)
the_post_thumbnail( 'medium' );          // Risoluzione media (predefinito 300px x 300px max)
the_post_thumbnail( 'large' );           // Risoluzione grande (predefinito 640px x 640px max)
the_post_thumbnail( 'full' );            // Risoluzione intera (dimensione originale caricata)

the_post_thumbnail( array(100, 100) );

Questo potrebbe esserti utile.

26 ott 2015 14:40:25
Commenti

Il punto della domanda è che l'OP stava cercando di trovare i nomi di tutte le dimensioni delle immagini disponibili, comprese eventuali dimensioni aggiuntive create dal tema e/o dai plugin.

Phill Healey Phill Healey
7 ago 2017 23:16:22