Cum poți obține toate dimensiunile și URL-urile imaginilor reprezentative?

25 oct. 2015, 14:05:41
Vizualizări: 33.2K
Voturi: 14

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?

1
Comentarii

Imaginea reprezentativă este doar ID-ul unui atașament, toate API-urile standard de atașament ar trebui să funcționeze cu ea

Tom J Nowell Tom J Nowell
25 oct. 2015 16:23:40
Toate răspunsurile la întrebare 3
3
16

Nu-mi amintesc o funcție care să facă exact asta, dar poate fi ușor realizată cu API-ul în general:

  1. Obține ID-ul atașamentului cu get_post_thumbnail_id()
  2. Obține dimensiunile disponibile cu get_intermediate_image_sizes()
  3. Pentru fiecare dimensiune folosește wp_get_attachment_image_src(), care oferă exact datele de care ai nevoie (URL și dimensiuni).
25 oct. 2015 19:39:50
Comentarii

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. :)

NoOne NoOne
26 oct. 2015 16:40:13

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.

Nimesh Nimesh
7 mai 2018 01:51:14

@Nimesh wp_get_attachment_metadata($attachment_id) vă va oferi ceea ce aveți nevoie.

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

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;
}
28 sept. 2018 20:59:52
Comentarii

excelent! Ați putea adăuga și $dir = pathinfo( $data['file'] )['dirname']; pentru a folosi ca: 'url' => $uploads_baseurl.'/'.$dir.'/'.$sizeInfo['file'], deoarece ar putea să nu includă directoarele an/lună

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

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.

26 oct. 2015 14:40:25
Comentarii

Scopul întrebării este că OP încerca să găsească numele tuturor dimensiunilor de imagini disponibile, inclusiv orice dimensiuni suplimentare create de temă și/sau plugin-uri.

Phill Healey Phill Healey
7 aug. 2017 23:16:22