那是正确的是的。这里有个提示,$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_posts
像query_posts
重置/中断主查询对象。这就是为什么一个人永远不应该使用query_posts