从个人主页获取帖子数据

时间:2016-10-19 作者:Mark

我想从一个私人页面获取帖子数据,以显示在网站的其余部分。代码如下所示:

$the_query = new WP_Query( \'page_id=1457\' );
while($the_query -> have_posts()) : $the_query -> the_post();
    setup_postdata( $the_query );
    // do something;
endwhile;
但我没有得到数据。

是因为我调用了隐藏在私有站点上的公共站点的数据吗?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

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();
}

SO网友:TheDeadMedic

您不需要对此进行查询-事实上,这是问题的一部分(WordPress将自动“过滤”未登录用户的私人页面)。

只要得到这篇文章,然后按照你的意愿去做:

if ( $my_page = get_post( 1457 ) ) {
     setup_postdata( $GLOBALS[\'post\'] = $my_page );
     // Whatever you need to do
     wp_reset_postdata();
}

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the