基于不同的逻辑创建两个循环

时间:2014-02-03 作者:NW Tech

我正试图找出解决这一问题的最佳方法,我有部分解决方案,但我无法全部解决。

我的最终目标是在某个页面模板中显示特定分类法的CPT中的最新帖子,这似乎是最容易实现的:

$args=array(
    \'post_type\' => \'portfolio\',
    \'post_status\' => \'publish\',
    \'orderby\' => \'date\',
    \'order\' => \'DESC\',
    \'posts_per_page\' => 1,
    \'type\' => \'featured\'
);

$portfolio_query = new WP_Query($args);
下一部分将显示所有其他帖子,上面查询的帖子除外。

这可以用一个循环来完成,还是需要多个带有偏移逻辑的循环?我不知道如何做到这一点。TIA。

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

据我所知,这很可能需要两个循环。第二个循环只需要知道如何排除您刚才查询的帖子。像下面这样的东西应该可以做到这一点。

$first_id = 5; // This should be set in the previous loop to the post ID of the post returned by your first query.
$args2 = array(
    \'post_type\' => \'portfolio\',
    \'post_status\' => \'publish\',
    \'orderby\' => \'date\',
    \'order\' => \'DESC\',
    \'posts_per_page\' => 10,
    \'type\' => \'featured\',
    \'post__not_in\' => array( $first_id ),
);
$portfolio_query_2 = new WP_Query( $args2 );
此信息直接取自WP_Query page in the WP Codex.

SO网友:Haris

获取公文包帖子类型项目

$arg1 = array(
            \'post_type\' => \'portfolio\',
            \'post_status\' => \'publish\',
            \'orderby\' => \'date\',
            \'order\' => \'DESC\',
            \'posts_per_page\' => 1,
            \'type\' => \'featured\'
    );
    $post_res1 = query_posts($arg1);
获取所有帖子

$post_res2 = query_posts($arg2);
合并所有结果//仅合并唯一的帖子

$all_posts = array_merge($post_res1, $post_res2);
从合并的数组中获取所有帖子ID

$post_ids = wp_list_pluck($all_posts, \'ID\');
获取所有post结果

$args = array(
            \'post__in\' => $post_ids,
            \'posts_per_page\' => -1,
        );
        query_posts($args);

结束

相关推荐

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

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