我正在运行一个查询循环,并希望“if”帖子有特色图像,它需要位于
<figure>
标签内。但特色图像的 <img>
标签出现在 <figure>
标签之前。可能是什么原因?
foreach($posts as $post){
setup_postdata($post);
echo '<article class="pet_post">';
if(has_post_thumbnail()) { echo '<figure class="post_thumbnail">'. the_post_thumbnail('full') . '</figure>'; };
echo '<h1 class="post_title">'. get_the_title() . '</h1>';
echo '<p class="pet_seller">'. get_the_content() . '</p>';
echo '<form method="POST">';
echo '<input type="hidden" name="post-id" value="'. get_the_ID() . '">';
echo '<button type="submit" name="delete-post">Delete this post</button>';
echo '</form>';
echo '</article>';
};
这是因为您使用的是
the_post_thumbnail
函数,默认情况下会回显图像,这比回显 figure
标签要早。
更换
echo '<figure class="post_thumbnail">'. the_post_thumbnail('full') . '</figure>';
与
echo '<figure class="post_thumbnail"><img src="' . get_the_post_thumbnail_url(get_the_ID(), "full") . '"></figure>';
我相信这种做法也是可以接受的。
<figure class="post_thumbnail">
<?php if(has_post_thumbnail()) { echo the_post_thumbnail('full'); }; ?>
</figure>
您还可以使用 post_thumbnail_html 过滤器挂钩以编程方式自定义帖子缩略图的
<img>
标签。
function my_theme_filter_post_thumbnail($html) {
$html = "<figure>{$html}</figure>";
return $html;
}
add_filter('post_thumbnail_html', 'my_theme_filter_post_thumbnail');
我最近在博客上谈论过它。