Hallo Leute,
ich hätte gerne auf meiner Beitragsseite in der Navigation unten (vor und zurück) das Bild des jeweiligen Posts, quasi als Vorschau, angezeigt. Kann mir jemand erklären, wie ich das am hinbekomme?
Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.
Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.
Jetzt anmeldenHier können Sie ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellen
Hallo Leute,
ich hätte gerne auf meiner Beitragsseite in der Navigation unten (vor und zurück) das Bild des jeweiligen Posts, quasi als Vorschau, angezeigt. Kann mir jemand erklären, wie ich das am hinbekomme?
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
Probier es mal mit get_previous_post(); und get_next_post();
https://developer.wordpress.org/reference/functions/get_next_post/
Soweit ich sehe, gibt es „deine“ Funktion nicht fertig, d.h. du musst über diese Funktionen die ID auslesen, um das Post-Thumbnail ausgeben zu können.
Gruß
helix
So, habe jetzt einiges ausprobiert und bin bei diesem Ergebnis stehengeblieben. Da meine PHP-Kenntnisse gen 0 gehen sieht das wahrscheinlich grauenhaft aus. Immerhin funktioniert es. Müsste nur noch ins "Reine" gebracht...
<?php $next_post = get_next_post();?>
<?php
if ( is_a( $next_post , 'WP_Post' ) ) :
$nextpost = get_adjacent_post( false, '', false, 'category' );
$image = get_the_post_thumbnail( $nextpost );
$name = get_the_title( $nextpost );
$url = get_permalink( $nextpost );
?>
<a href="<?php echo $url;?>"><img width="100px" alt="" src="<?php echo $image;?></a>
<?php endif; ?>
<?php
if ( is_a( $next_post , 'WP_Post' ) ) :
$prevpost = get_adjacent_post( false, '', true, 'category' );
$image = get_the_post_thumbnail( $prevpost );
$name = get_the_title( $prevpost );
$url = get_permalink( $prevpost );
?>
<a href="<?php echo $url;?>"><img width="100px" alt="" src="<?php echo $image;?></a>
<?php endif; ?>
Alles anzeigen
Irgendwo muss da allerdings noch ein Fehler sein. Bei einigen Bildern zeigt er mir kein Bild an (also Bild mit einem x), obwohl der Beitrag ein Thumbnail hat.
Check mal durch: Funktioniert die Verlinkung überall? Auch dort, wo das (eigentlich vorhandene) Beitragsbild nicht angezeigt wird?
Lässt sich ausfindig machen, warum das Bild nicht gezeigt werden kann (Webdeveloper-Tools)?
Gruß
helix
Die Verlinkung funktioniert einwandfrei. Wenn ich das Bild untersuche, dann wird folgendes angezeigt:
<img width="100px" alt="" src="<img width=" 750"="" height="290" class="attachment-post-thumbnail size-post-thumbnail wp-post-image">
Es wird wahrscheinlich an dieser Stelle liegen:
Ändere ich sie jedoch wie folgt, dann bekomme ich "> neben den Bildern angezeigt.
Dein image-Tag ist in beiden Fällen nicht richtig. Image ist ein selbstschließendes Element <img />
=>
Und dann hast du deine Variable $image falsch angelegt. Die Funktion get_the_post_thumbnail() gibt dir bereits einen <img>-Tag zurück, nicht die URL. Dafür wäre the_post_thumbnail_url() zuständig.
Bleiben wir bei get_the_post_thumbnail(); – deine weiteren Parameter gibst du dann in den Klammern ein.
$image = get_the_post_thumbnail( $prevpost, array( 100, xx), array( 'class' => 'meine-thumbnail-class', 'alt' => '' ) );
Ich weiß nicht, ob die Größenattribute auch funktionieren, wenn du nur ein Maß – die Breite – angibst, ansonsten für xx noch die Höhe eintragen (ausprobieren); Klasse ist beispielhaft; dein alt-Tag musst du sowieso noch mit Leben, äh: Inhalt, füllen.
Und dann eben in der Ausgabe deine Variable anstelle des img-Tags ausgeben.
Siehe: https://developer.wordpress.org/reference/func…post_thumbnail/
Gruß
helix
Großartig! So funktioniert es schonmal wunderbar, mit einem aber (kommt unter dem Code).
Also: Hier erstmal zum nachvolziehen mein abgeänderter Code:
<?php $next_post = get_next_post();?>
<!-- Previous Post -->
<?php
if ( is_a( $next_post , 'WP_Post' ) ) :
$prevpost = get_adjacent_post( false, '', true, 'category' );
$image = get_the_post_thumbnail( $prevpost, array( 80, ), array( 'class' => 'kommt-spaeter', 'alt' => 'Test' ) );
$name = get_the_title( $prevpost );
$url = get_permalink( $prevpost );
?>
<a href="<?php echo $url;?>"><?php echo $image;?></a>
<?php endif; ?>
<!-- Next Post -->
<?php
if ( is_a( $next_post , 'WP_Post' ) ) :
$nextpost = get_adjacent_post( false, '', false, 'category' );
$image = get_the_post_thumbnail( $nextpost, array( 80, ), array( 'class' => 'kommt-auch-spaeter', 'alt' => 'Test' ) );
$name = get_the_title( $nextpost );
$url = get_permalink( $nextpost );
?>
<a href="<?php echo $url;?>"><?php echo $image;?></a>
<?php endif; ?>
Alles anzeigen
Nun zum "aber"...
Wie gesagt, alles funktioniert soweit genauso wie ich es mir vorgestellt habe. Leider gibt es noch zwei Probleme:
1. Wenn ich zum allerersten Beitrag gehe, dann wird mir dieser auch als Thumbnail angezeigt, obwohl dort gar kein Bild mehr sein dürfte.
2. Wenn ich zum allerletzten Beitrag gehe, dann wird dort gar kein Thumbnail mehr vom vorherigen Post angezeigt.
Was nun? :shock:
Ich hatte ein ähnliches Problem für eine Bilder-Navigation (Galerie), dort allerdings „symmetrisch“, d.h. Fehlermeldung beim ersten und beim letzten Bild, weil es dort kein voriges bzw. folgendes Bild geben kann.
Hast du den Debug-Modus eingeschaltet? Bekommst du eine Fehlermeldung? Vielleicht hilft die weiter.
Gruß
helix
Hast du den Debug-Modus eingeschaltet? Bekommst du eine Fehlermeldung? Vielleicht hilft die weiter.
/mnt/web102/b3/98/57738898/htdocs/WordPress_SecureMode_01/wp-includes/media.php on line 712 Notice: Undefined offset: 1 in
/mnt/web102/b3/98/57738898/htdocs/WordPress_SecureMode_01/wp-includes/media.php on line 714 Notice: Undefined offset: 1 in
/mnt/web102/b3/98/57738898/htdocs/WordPress_SecureMode_01/wp-includes/media.php on line 717 Notice: Undefined offset: 1 in
/mnt/web102/b3/98/57738898/htdocs/WordPress_SecureMode_01/wp-includes/media.php on line 712 Notice: Undefined offset: 1 in
/mnt/web102/b3/98/57738898/htdocs/WordPress_SecureMode_01/wp-includes/media.php on line 714 Notice: Undefined offset: 1 in
/mnt/web102/b3/98/57738898/htdocs/WordPress_SecureMode_01/wp-includes/media.php on line 717 Notice: Undefined offset: 1 in
...usw.! Das wird angezeigt.
Hallo, ich hatte das schon gesehen, dass du die Fehlermeldung gepostet hast, der Thread lag auch dauernd in einem geöffneten Tab und hat freundlich gewartet … kam nur dies und das und sonstewas auch noch …
„Undefined offset: 1“ ist schon ein Hinweis darauf, dass nicht vorab geklärt ist, ob es da überhaupt was auszugeben gibt.
Versuche mal diese Abfrage auch noch einzubauen. Wahrscheinlich am zielführendsten mit !empty()
Vielleicht in die Richtung:
Gruß
helix
Wollt nicht nerven, sorry! :wink:
Ich habs probiert, aber der Fehler bleibt leider bestehen.
„Undefined offset: 1“ ist schon ein Hinweis darauf, dass nicht vorab geklärt ist, ob es da überhaupt was auszugeben gibt.
Das war Unsinn. Ich hätte mal die angegebenen Zeilen in der ebenso angegebenen media.php in wp-includes nachlesen sollen – sorry.
In dem Zusammenhang bedeutete die Fehlermeldung, dass du für deine Bildgröße keine Höhe angegeben hattest.
Ich vermute, du wolltest die Höhe auf „auto“ setzen => das funktioniert in get_the_post_thumbnail() tatsächlich auch genauso, du kannst den Wert auto angeben, in Hochkommata eingeschlossen.
Damit ist dann die Fehlermeldung weg.
Nach wie vor bestehen bleibt das fehlerhafte Verhalten beim ersten und letzten Beitrag in der Reihe.
Ich habe es jetzt mal auf meine Art durchgespielt, d.h. ich habe die Funktionen get_previous_post() und get_next_post() verwendet und noch die if-Abfragen eingebaut, ob es einen vorherigen oder nachfolgenden Beitrag überhaupt gibt und ob der Beitrag ein Beitragsbild hat (sonst Ausgabe des Beitragstitels).
Damit funktioniert es bei mir einwandfrei.
<?php
$prevpost = get_previous_post();
if ( !empty( $prevpost ) ) {
$image = get_the_post_thumbnail( $prevpost, array( 80, 'auto' ), array( 'class' => 'kommt-spaeter', 'alt' => 'Test' ) );
$name = get_the_title( $prevpost );
$url = get_permalink( $prevpost );
if( !empty( $image ) ) {
?>
<a href="<?php echo $url;?>"><?php echo $image;?></a>
<?php
}
else {
?>
<a href="<?php echo $url;?>"><?php echo $name;?></a>
<?php
}
}
$nextpost = get_next_post();
if ( !empty( $nextpost ) ) {
$image = get_the_post_thumbnail( $nextpost, array( 80, 'auto' ), array( 'class' => 'kommt-spaeter', 'alt' => 'Test' ) );
$name = get_the_title( $nextpost );
$url = get_permalink( $nextpost );
if( !empty( $image ) ) {
?>
<a href="<?php echo $url;?>"><?php echo $image;?></a>
<?php
}
else {
?>
<a href="<?php echo $url;?>"><?php echo $name;?></a>
<?php
}
} ?>
Alles anzeigen
Gruß
helix
Jetzt funktionierts einwandfrei. Dafür bist du heute mein Held des Tages! ;)
Vielen Dank helix!!!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!