在页面的循环外显示缩略图

时间:2015-12-12 作者:Bjarni

要在循环外部显示帖子缩略图图像,您需要将帖子ID与页面关联起来,这是否正确?

像这样:

echo get_the_post_thumbnail($post->ID);

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

那是正确的是的。这里有个提示,$post 不可靠,因为许多人使用(知道或不知道)$post 作为局部变量$post 全球的一个简单的$post = get_post( \'some custom id\' ) 你可能认为这是无辜的$post 对象到您正在查询的帖子,因此$post 不再保留您正在查看的页面的对象。

使用的自定义查询the_post()setup_postdata( $post ) 还更改$post 全局,因此如果您或其他人在自定义查询后忘记重置postdata(非常重要的\'wp\\u reset\\u postdata(),很多人都忘记了它),那么您将得到错误的post对象。

我总是告诉人们测试这种做法,是吗var_dump( $post ); 在自定义查询之前,创建一个完整的自定义查询,但“忘记”添加wp_reset_postdata() 然后做一个var_dump( $post ); 在查询之后。结果将清楚地表明$post 已更改为自定义查询中的最后一篇文章。

要获得更可靠的结果,请使用get_queried_object() 在真实页面、单个页面和归档页面上获取完整的查询对象。在真页和单页上,将返回post对象;在类别和标记页等存档上,将返回术语对象等。

如果您只需要ID,则始终可以使用get_queried_object_id().

您可以使用:

echo get_the_post_thumbnail( get_queried_object_id() );
获取正在查看的页面的缩略图。

最后一点,虽然这非常可靠,但它确实与query_postsquery_posts 重置/中断主查询对象。这就是为什么一个人永远不应该使用query_posts

额外资源Should we trust the post globals?

相关推荐