如何手动将帖子添加到wp_Query?

时间:2019-08-09 作者:Doug Cassidy

$recent_query = new WP_Query(array (
    \'post_status\'   => \'publish\',
    \'posts_per_page\' => -1
) );

//$recent_query->posts[] = get_post(1480);
//$recent_query->posts[] = get_post(1443);

array_unshift($recent_query->posts,  get_post(1480), get_post(1443));
print_r($recent_query->posts);

// The Loop
if( $recent_query->have_posts() ) : ?>
    <?php while( $recent_query->have_posts()) : $recent_query->the_post() ?>
[...]
我想在我的查询和循环中添加2篇任意帖子。以上任何一种方法都会使帖子进入$recent_query->posts

使用$recent_query->posts[] = get_post(1480); 代码,手动贴子将在数组中,但不会显示在循环中。

使用array_unshift($recent_query->posts, get_post(1480), get_post(1443)); 原始帖子将被删除,并在循环中仅显示手动帖子。

2 个回复
SO网友:Faye

好的,我认为这个问题的答案是创建一个新的数组,该数组将您的帖子ID和您试图包含的特定ID组合在一起,可能与您在那里所做的方式相同。然后在查询参数中,使用\'post__in\'=> $ids,.

举个例子,这里我们通过ACF选择了一些帖子,然后通过我们的WP\\U查询运行它们。

    $ids = get_field( \'acf_field_name\',);

    $args = [
        \'post_type\'      => \'posts\',
        \'posts_per_page\' => 10,
        \'post__in\'       => $ids,
        \'post_status\'    => \'publish\',
        \'orderby\'        => \'post__in\',
    ];
你真正需要做的就是抓取你所有的帖子ID,加上这两个有问题的ID,并使用它来代替我的示例中使用的acf get\\u字段。

希望有帮助!

SO网友:Doug Cassidy

解决方案是执行两个查询,然后执行第三个查询,以设置wp\\U查询:

$query1 = new WP_Query(array (
    \'post_status\'   => \'publish\',
    \'posts_per_page\' => $postnumber,
    \'ignore_sticky_posts\' => 1,
    \'cat\' => $category
) );

$query2 = new WP_Query(array(
    \'post_type\' => \'page\',
    \'post__in\' => array(1443,1480)));

$allTheposts = array_merge($query2->posts,$query1->posts);
foreach($allTheposts as $p){
    $ids[] = $p->ID;
}

//new query, using post__in parameter
$recent_query = new WP_Query(array(
    \'post__in\' => $ids,  
    \'post_type\' => array(\'page\',\'post\'), 
    \'orderby\' => \'post__in\'
));

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post