将一个页面/帖子包括到已在返回帖子查询中

时间:2013-11-05 作者:Joshc

我有我的新闻查询,它在我的索引文件中。

我想在这个查询中包含一篇实际上是一个页面的帖子。

有什么办法吗?

<?php query_posts(array(
    \'posts_per_page\' => 5,
    \'paged\' => $paged
)); if ( have_posts() ) : ?>
我的页面id是6417-如果我在中使用post\\uu,那么这是唯一显示的内容。

有人能给我提个建议吗,我需要用元查询吗?

谢谢

3 个回复
SO网友:Chip Bennett

下面是正确的实现:

注册category 的分类法page 岗位类型:

function wpse121285_add_category_to_pages() {  
    register_taxonomy_for_object_type(\'category\', \'page\');  
}
add_action( \'admin_init\', \'wpse121285_add_category_to_pages\' );
将适当的类别术语添加到所需页面。

然后修改默认值$wp_query 对象位于pre_get_posts:

function wpse121285_pre_get_posts( $query ) {
    // Main query for the blog posts index
    // Note that you can use most/any contextual
    // conditional here, depending on your needs
    if ( is_home() && $query->is_main_query() ) {
        $query->set( \'posts_per_page\', 5 );
        $query->set( \'category_name\', \'news\' );
        $query->set( \'post_type\', array( \'post\', \'page\' ) );
    }
}
add_action( \'pre_get_posts\', \'wpse121285_pre_get_posts\' );
保留默认循环标记:

// No query_posts() needed here!
if ( have_posts() ) : while ( have_posts() ) : the_post();

SO网友:Subharanjan

像这样的。。可能

if ( have_posts() ) {
    while ( have_posts() ) {
        global $post;
        if ( some_condition ) {
            $page_id = 6417; // This is the ID of the page to be included
            $post = get_post( $page_id );
        }else{
            the_post(); // END custom first post
        }

SO网友:Joshc

好吧,我自己想出了一个解决办法。

我使用此功能将类别添加到我的新闻提要中。

function add_category_to_pages() {  
    register_taxonomy_for_object_type(\'category\', \'page\');  
}
add_action( \'admin_init\', \'add_category_to_pages\' );
然后,我找到了我想要的页面,选择了我的新闻类别,然后取消了查询。。。

<?php query_posts(array(

    \'post_type\' => array(\'post\',\'page\'),
    \'posts_per_page\' => 5,
    \'paged\' => $paged,
    \'category_name\' => \'news\'

)); if ( have_posts() ) : ?>

结束