Besten Dank für Deine Inspiration. Der Link hat mich auf die richtige Fährte gebracht.
Dass hier u.U. mehrere Funktionsaufrufe nötig sind, habe ich bereits ins Auge gefasst.
Zur Lösung:
Mit get_post_field ()
erhalte ich den Titel, die Beschriftung, die Beschreibung und die URL des Bildes (in der grössten Auflösung)
WP speichert in meinem Fall die Bilder in 8 verschiedenen Grössen. Mit wp_get_attachment_image_src()
erhalte ich ebenfalls die URL zum Bild, kann jedoch die Grösse (zum Laden) beeinflussen. Wenn eine mittlere Grösse reicht, brauche ich ja nicht das grösste Bild zu laden, damit es WP wieder runter skaliert.
Statt des Bildes füge ich nur noch einen Shortcode in den Beitrag ein:
[loadimg id=’263′ size=’medium_large‘ info=’kurze Beschreibung des Bildes‘]
ID ist die Bild ID in der Mediathek, ersichtlich in der URL wenn man ins Bild rein klickt.
SIZE ist die Bildgrösse. Es gibt auch noch thumbnail, medium oder large.
INFO ist für die Funktion nicht relevant, hier trage ich eine beliebige Beschreibung zum Bild ein, da es mir ja nicht angezeigt wird und ich mir unter der ID auch nichts vorstellen kann.
Die Funktion dazu:
function load_img_mediathek($atts) {
$atts = shortcode_atts( array(
'id' => '',
'size' => '',
), $atts, 'loadimg' );
$attachmentID = $atts['id'];
$imageSizeName = $atts['size'];
$img = wp_get_attachment_image_src($attachmentID, $imageSizeName);
$excerpt = get_post_field ('post_excerpt', $attachmentID); // Feld Beschriftung (Bildunterschrift)
$title = get_post_field ('post_title', $attachmentID); // Feld Titel
$content = get_post_field ('post_content', $attachmentID); // Feld Beschreibung
$var = "<figure>";
$var = $var."<img src='".$img[0]."' width='".$img[1]."' height='".$img[2]."' class='bildrahmen' title='".$content."'>";
$var = $var."<figcaption>".$excerpt."</figcaption>";
$var = $var."</figure>";
return $var;
}
add_shortcode('loadimg', 'load_img_mediathek');
$title wird in diesem Beispiel nicht verwendet, die Zeile könnte man also löschen.
Das CSS dazu: (muss natürlich individuell angepasst werden)
figure {
position: relative;
margin: 0;
padding: 10px;
width: 470px;
border: 1px solid gainsboro;
background: white;
}
figcaption {
padding: 10px;
text-align: center;
}