Come ottenere tutte le dimensioni e gli URL delle immagini in evidenza?
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?

Non ricordo una funzione che faccia esattamente questo, ma è facilmente ottenibile con l'API complessivamente:
- Recupera l'ID dell'allegato con
get_post_thumbnail_id()
- Recupera le dimensioni disponibili con
get_intermediate_image_sizes()
- Per ogni dimensione usa
wp_get_attachment_image_src()
, che fornisce esattamente i dati di cui hai bisogno (URL e dimensioni).

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

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.

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

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.
