Cum să obții postări recente cu thumbnail în WordPress
Vreau să obțin mai multe postări recente. Folosesc wp_get_recent_posts, dar primesc doar prima imagine.
<?php $args = array( 'numberposts' => '3' );
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</a> </li> ';
if ( has_post_thumbnail() ) {
the_post_thumbnail('thumbnail');
}
}
?>

De fapt, condiția returnează întotdeauna false pentru că nu transmiți ID-ul postului către funcția has_post_thumbnail()
și funcția primește întotdeauna valoarea implicită care este null
.
has_post_thumbnail( $recent["ID"] )
.
La fel și cu funcția get_the_post_thumbnail()
.
get_the_post_thumbnail( $recent["ID"] )
.
$args = array( 'numberposts' => '3' );
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $recent ){
if ( has_post_thumbnail( $recent["ID"]) ) {
echo get_the_post_thumbnail($recent["ID"],'thumbnail');
}
}
Dar dacă utilizați funcțiile has_post_thumbnail();
și get_the_post_thumbnail()
în interiorul The_Loop
din WordPress, atunci nu este necesar să transmiteți ID-ul postului.
$args = array( 'posts_per_page' => '3' );
$recent_posts = new WP_Query($args);
while( $recent_posts->have_posts() ) {
$recent_posts->the_post() ;
if ( has_post_thumbnail() ) {
echo get_the_post_thumbnail();
}
}
wp_reset_postdata();

Pentru a utiliza the_post_thumbnail
, trebuie să inițializați o buclă. Mai precis, ar trebui să arate astfel:
<?php
$args = array( 'posts_per_page' => '3' );
$recent_posts = new WP_Query($args);
while( $recent_posts->have_posts() ) :
$recent_posts->the_post() ?>
<li>
<a href="<?php echo get_permalink() ?>"><?php the_title() ?></a>
<?php if ( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail('thumbnail') ?>
<?php endif ?>
</li>
<?php endwhile; ?>
<?php wp_reset_postdata(); # resetează datele postului pentru ca alte interogări/bucle să funcționeze ?>
(Am plasat thumbnail-ul în interiorul tag-urilor <li>
deoarece orice altceva în afară de <li>
într-un <ol>
sau <ul>
reprezintă HTML invalid.)
