Gibt es eine Standardmethode, um alle registrierten Größen der vorgestellten Bilder abzurufen? Bei add_image_size()
kann man verschiedene Größen eintragen. Was ich brauche, ist, alle Größen eines vorgestellten Bildes eines Pfostens zu bekommen. Etwas wie das:
$ sizes = get_post_feature_image_sizes ($ postid);
... was ein Array von Objekten wie dieses zurückgibt (hier im JSON-Format):
[
{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'},
]
Gibt es so etwas oder muss ich alle Dateinamen des Upload-Ordners mit Regex scannen?
Ich erinnere mich nicht an eine Funktion, die genau das macht, aber sie ist mit API insgesamt einfach zu erreichen:
get_post_thumbnail_id()
abrufenget_intermediate_image_sizes()
wp_get_attachment_image_src()
, um genau die Daten anzugeben, die Sie benötigen (URL und Abmessungen).Nachdem Sie die ID ( get_post_thumbnail_id ($ YOUR_POST_ID) ) erhalten haben, müssen Sie die Basis-URL des Uploads und die Metadaten des Anhangs kennen.
Uploads base url können in einem Array gefunden werden, das von wp_upload_dir () zurückgegeben wird.
Metadaten für Anhänge können mit wp_get_attachment_metadata () abgerufen werden.
Hier ist eine praktische Funktion, die ich geschrieben habe und die URL-Daten für alle Bildanhänge, die nicht nur enthalten sind aufbereitet.
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;
}
Um ein Bild entsprechend der Größe zu erhalten, können Sie die in WordPress vordefinierte Funktion the_post_thumbnail( $size, $attr )
verwenden.
sie können vordefinierte Medienformate verwenden.
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) );
Das könnte dir helfen.