我正在尝试迭代最近的三篇帖子,并显示他们的缩略图,标题和永久链接。
第一个具有略微不同的外观,因此有一个if语句也可以在不同的设置中显示第一个,然后迭代其余部分。发生了什么,它显示了第一个帖子三次与if和else的样式。
我不确定我做错了什么,谢谢你的帮助!
<?php
$recent = wp_get_recent_posts( array('numberposts' => 3) );
$i = 0;
global $recent_post;
foreach( $recent as $recent_post ) {
if ($i == 0 ): ?>
<div class="header_recent main">
<a href="<?php the_permalink($recent_post); ?>">
<img src="<?php echo get_the_post_thumbnail($recent_post->ID); ?>"/>
<div class="overlay">
<h1><?php the_title_attribute($recent_post); ?></h1>
</div>
</a>
</div>
<?php else: ?>
<div class="header_recent side">
<a href="<?php the_permalink($recent_post); ?>" title="<?php the_title_attribute($recent_post); ?>">
<img src="<?php echo get_the_post_thumbnail($recent_post->ID); ?>"/>
<div class="overlay">
<h1><?php the_title_attribute($recent_post); ?></h1>
</div>
</div>
<?php endif; $i++; }
wp_reset_postdata();
?>
此外,我非常感谢有关get_the_post_thumbnail
功能的警告的帮助:
注意:尝试在线获取非对象的属性 29
答案 0 :(得分:1)
默认情况下,函数wp_get_recent_posts()
会返回ARRAY
,您可以在documentation中看到。在您的情况下,您需要将第二个参数$output
作为OBJECT
传递:
$recent = wp_get_recent_posts( array( 'numberposts' => 3 ), OBJECT );
此外,您不应将$recent_post
作为the_title_attribute()
函数的参数传递。所以而不是:
<h1><?php the_title_attribute($recent_post); ?></h1>
你可以写:
<h1><?php echo $recent_post->post_title; ?></h1>
并且您不需要将$recent_post
声明为global
。