In den normalen WordPress-Funktionen und darauf aufbauenden Themes, die dazu dienen Metadaten von Attachments (wie Bildern) zu ermitteln, werden oft nur wenige Daten bereitgestellt. Will man bei einem Bild mehr Daten anzeigen, muss man daher etwas tiefer schürfen.
Hierzu hab ich mir folgende Funktion gebastelt:
function get_image_attributs($id=0) { if ($id==0) return; $meta = get_post_meta( $id ); if (!isset($meta)) { return; } $result = array(); $result['alt'] = trim(strip_tags($meta['_wp_attachment_image_alt'][0])); if (isset($meta['_wp_attachment_metadata']) && is_array($meta['_wp_attachment_metadata'])) { $data = unserialize($meta['_wp_attachment_metadata'][0]); if (isset($data['image_meta']) && is_array($data['image_meta']) && isset($data['image_meta']['copyright'])) { $result['copyright'] = trim(strip_tags($data['image_meta']['copyright'])); } } $attachment = get_post($id); if (isset($attachment) ) { $result['beschriftung'] = trim(strip_tags( $attachment->post_excerpt )); $result['beschreibung'] = trim(strip_tags( $attachment->post_content )); $result['title'] = trim(strip_tags( $attachment->post_title )); } $displayinfo = $result['beschriftung']; if (empty($displayinfo)) $displayinfo = $result['beschreibung']; if (empty($displayinfo) && !empty($result['copyright'])) $displayinfo = __('Bild: ','mytheme').$result['copyright']; if (empty($displayinfo)) $displayinfo = $result['alt']; $result['credits'] = $displayinfo; return $result; }
Diese Funktion erhält als Übergabewert die ID des Attachments (Bild). In dem zurück gelieferten Array sind dann einige der Attribute enthalten, die man mglw. braucht: Der Alttag, der uns auch so schon geliefert wurde, aber auch die Beschriftung, die Beschreibung, der Titel des Bildes und die Copyright-Information die aus den Bilddaten (EXIF) selbst stammen.
Ausserdem enthält das Array ein generiertes String „credits“, welches sich aus den Inhalten von der Beschriftung, der Beschreibung oder der Copyright-Info ergibt, je nachdem ob diese Strings leer sind.