Ich habe folgendes Problem. Ich möchte bei einem Theme beim Post Format „Galerie“ gerne in der Blogansicht statt nur eines großen Vorschaubildes bereits zusätzlich zwei oder drei weitere Bilder darstellen (als Thumbnails). Ich bin auch schon soweit gekommen, dass ich die URL der Thumbs ausgegeben bekomme, also steht der Darstellung der Bilder eigentlich nichts mehr im Wege.
Nur möchte ich gerne die alt-Texte ausgeben lassen, bekomme das allerdings gerade nicht hin. Hier erstmal der Code der content-gallery.php:
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php
$images = get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) );
if ( $images ) :
$total_images = count( $images );
$image = array_shift( $images );
$image_img_tag = wp_get_attachment_image( $image->ID, 'large' );
?>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute( array( 'before' => __( 'Permalink to: ', ''), 'after' => '' ) ); ?>" rel="bookmark">
<h1 class="entry-title"><?php the_title();?></h1>
<figure class="gallery-thumb">
<?php if ( has_post_thumbnail() ):
the_post_thumbnail('large');
else:
echo $image_img_tag;
endif; ?>
</figure><!-- .gallery-thumb -->
</a>
<?php else:?>
<h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute( array( 'before' => __( 'Permalink to: ', ''), 'after' => '' ) ); ?>" rel="bookmark"><?php the_title();?></a></h1>
<?php endif; ?>
</header><!-- .entry-header -->
<div class="entry-content">
<?php
if ( $images ) :
if ( has_post_thumbnail() ):
$post_thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ));
$gallery = get_post_gallery_images();
$counter = 0;
$image_list = '<ul>';
foreach( $gallery as $image ):
if($counter>=2):
break;
endif;
if($post_thumbnail==$image):
continue;
endif;
$image_list .= '<li>' . $image . '</li>';
$counter++;
endforeach;
$image_list .= '</ul>';
echo $image_list;
else:
$gallery = get_post_gallery_images();
$counter = 0;
$image_list = '<ul>';
foreach( $gallery as $image ):
if($counter==0):
$counter++;
continue;
endif;
if($counter>=3):
break;
endif;
$image_list .= '<li>' . $image . '</li>';
$counter++;
endforeach;
$image_list .= '</ul>';
echo $image_list;
endif;
?>
<p><em><?php printf( _n( 'This gallery contains <a %1$s>%2$s photo</a>.', 'This gallery contains <a %1$s>%2$s photos</a>.', $total_images, '' ),'href="' . esc_url( get_permalink() ) . '" title="' . esc_attr( sprintf( __( 'Permalink to %s', '' ), the_title_attribute( 'echo=0' ) ) ) . '" rel="bookmark"', number_format_i18n( $total_images )); ?></em></p>
<?php endif;
the_excerpt();?>
</div><!-- .entry-content -->
</article><!-- #post-<?php the_ID(); ?> -->
Alles anzeigen
Ich gebe zwei Bilder der Galerie als kleines Bild aus – eins groß. Wenn kein Artikelbild gewählt ist, dann werden einfach die ersten drei Bilder ausgegeben. Wenn ein Post-Thumbnail gewählt ist wird noch geprüft, dass das Bild nicht doppelt ausgegeben wird (wenn als Post-Thumbnail bspw das erste oder zweite Bild gewählt ist damit dies groß dargestellt wird, würde es dann als kleines Bild ja nochmal erscheinen)=.
In der Variable $image ist dann die entsprechende URL des Thumbnails gespeichert. Hier sehe ich aber keinen Weg, wie ich von hier aus zu dem alt-Text des Bildes komme. Ich stolpere immer wieder über die Funktion wp_get_attachment_image, die ja genau das ausgibt, was ich möchte. Allerdings muss ich dafür die id des Bilder übergeben, die ich aber nicht habe.
Nun habe ich versucht, von der URL des Bildes durch eine Datenbankabfrage auf die id zu kommen – allerdings werden in der Tabelle „Posts“ ja nur die Dateien mit dem „normalen“ Dateinamen festgehalten, nicht die Dateinamen der Thumbnails (die ich von get_post_gallery_images ja nur zurückbekomme).
Also meine Frage: Gibt es eine Lösung, wie ich die URL des „full“-Bildes herausbekomme, und von da auf die id komme?