判断ID是页面还是帖子,查询ID

时间:2012-12-02 作者:Jason

我想查找页面id并确定它是页面还是帖子。然后查询id并显示标题、特色图片等内容。

这适用于以下页面:

    query_posts(\'page=\' . $featured_tab); 
本工程或岗位:

    query_posts(\'p=\' . $featured_tab); 
这将告诉我$featured\\u标记是否是帖子或页面:

    get_post_type( $featured_tab ) 
但这不起作用

    foreach ( $featarr as $featured_tab ) {
        if (get_post_type( $featured_tab ) == \'page\') {
            $featured_tab_type = \'page=\';
        } elseif (get_post_type( $featured_tab ) == \'post\') {
            $featured_tab_type = \'p=\';
        }
        query_posts($featured_tab_type . $featured_tab); 

        while (have_posts()) : the_post();    

           Echo \'stuff here\';
我的问题是。。。$featured\\u标记变量表示页面上显示的指定页面/帖子id。

所以我输入了一串id,即345432432355。。。etc然后将每个id作为$featured\\u选项卡,查询标题、特色页面和摘录。

然后,我在一个三列表中显示所有页面/帖子id。

这项工作非常完美,但只有当我查询其中一项或另一项,而不是像我在if语句中所做的那样,如果post-use p=或如果page-use-page=。

当我在这里使用if条件是get crazy results时,如果有9个ID,我会得到50多个结果。。。重复项和仅显示无发布页面。

2 个回复
SO网友:Milo

您不必确定查询它的类型,只需设置适当的参数来覆盖默认值。首先,我们将使用WP_Query 执行其他查询而不是query_posts.

如果我们只设置p 论点post_type 默认为post, 所以我们不会得到任何页面:

$query = new WP_Query(
    array(
        \'p\' => 13
    )
);
如果我们加上post_type 并将其设置为any, 我们将获得任何帖子ID 13,无论是帖子、页面、附件等。。

$query = new WP_Query(
    array(
        \'post_type\' => \'any\',
        \'p\' => 13
    )
);
如果您有一些帖子ID并且需要查询所有帖子ID,那么可以去掉foreach循环,只需使用post__in 参数:

$query = new WP_Query(
    array(
        \'post_type\' => \'any\',
        \'post__in\' => array( 1, 2, 13, 42 )
    )
);

SO网友:Jason

好吧,我想出来了:

query_posts(array (     
   \'p\' => $featured_tab,
   \'post_type\' => array(\'post\', \'page\'),
    )       
);
而$featured\\u tab是您要查询的id。

结束