setup_postdata
接受类型为的post对象\\WP_Post
, 但你通过了WP_Query
相反
e、 g。
global $post;
setup_postdata( $post );
谢天谢地,当你打电话给
the_post
, 它为您设置当前的帖子数据,因此您只需删除该行即可。
第二个问题是WP_Query
如果您未登录,将筛选出私人帖子,因此有必要将帖子状态设置为“私人”。
不过,你错过了一件重要的事情,那就是清理电话。你需要打电话wp_reset_postdata()
完成后,循环后运行的代码将具有查询中的当前帖子,而不是最后一篇帖子。
该查询可能是这样的:
$the_query = new WP_Query( array(
\'id\' => \'1457\'
\'post_type\' => \'page\',
\'post_status\' => \'private\'
) );
if ( $the_query->have_posts() ) {
while( $the_query->have_posts() ) {
$the_query->the_post();
// do something;
}
wp_reset_postdata();
}
但是有一种更快的方法,您已经知道帖子ID,所以我们可以这样做:
$p = get_post( 1457 );
if ( null !== $p ) {
setup_postdata( $p );
// do things
wp_reset_postdata();
}