Cum poți obține toate dimensiunile și URL-urile imaginilor reprezentative?
Există o modalitate standard de a obține toate dimensiunile înregistrate ale imaginilor reprezentative?
Poți înregistra diferite dimensiuni folosind add_image_size()
.
Am nevoie să obțin toate dimensiunile unei imagini reprezentative a unei postări.
Ceva de genul:
$sizes = get_post_feature_image_sizes($postid);
...care va returna un array de obiecte ca acesta (aici în 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'},
]
Există ceva similar, sau va trebui să scanez toate numele fișierelor din folderul de upload folosind regex?

Nu-mi amintesc o funcție care să facă exact asta, dar poate fi ușor realizată cu API-ul în general:
- Obține ID-ul atașamentului cu
get_post_thumbnail_id()
- Obține dimensiunile disponibile cu
get_intermediate_image_sizes()
- Pentru fiecare dimensiune folosește
wp_get_attachment_image_src()
, care oferă exact datele de care ai nevoie (URL și dimensiuni).

Mulțumesc, asta a fost de mare ajutor! :) Aceasta este prima mea experiență de dezvoltare cu WP și API-ul, iar terminologia este puțin înspăimântătoare. :)

există vreo modalitate de a prelua dimensiunea, lățimea și înălțimea generate ale imaginii reprezentative a postării curente. De exemplu, dacă imaginea reprezentativă setată are dimensiunea 540 x 400, deși ar trebui să fie 550 x 550. Cum se poate prelua dimensiunea imaginii reprezentative a postării curente pentru a stoca $width = 540 și $height = 400 în exemplul curent.

După ce obții ID-ul acestuia ( get_post_thumbnail_id($YOUR_POST_ID) ), trebuie să cunoști URL-ul de bază al încărcărilor și metadatele atașamentului.
URL-ul de bază al încărcărilor poate fi găsit într-un array returnat de wp_upload_dir().
Metadatele atașamentului pot fi obținute prin wp_get_attachment_metadata().
Iată o funcție utilă pe care am scris-o și care pregătește datele URL pentru orice atașament de imagine, nu doar pentru cea principală.
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;
}

Pentru a obține imaginea în funcție de dimensiune, poți folosi funcția predefinită din WordPress care este the_post_thumbnail( $size, $attr )
.
Poți utiliza dimensiuni predefinite pentru media.
the_post_thumbnail();
the_post_thumbnail( 'thumbnail' ); // Thumbnail (implicit 150px x 150px max)
the_post_thumbnail( 'medium' ); // Rezoluție medie (implicit 300px x 300px max)
the_post_thumbnail( 'large' ); // Rezoluție mare (implicit 640px x 640px max)
the_post_thumbnail( 'full' ); // Rezoluție completă (dimensiunea originală încărcată)
the_post_thumbnail( array(100, 100) );
Acest lucru te poate ajuta.
