如何在WordPress中以随机顺序显示多个帖子类型的帖子?

时间:2014-07-01 作者:Hemant Kumar

我想在同一个循环中显示来自多个帖子类型(照片,帖子)的帖子,其中一个帖子来自“照片”帖子类型,另一个帖子来自“帖子”。有人能帮我吗?这是我的代码:

<?php
$args = array(
    \'post_type\'=> array(\'photo\', \'post\'),
    \'orderby\' => \'date\',
    \'posts_per_page\' => 10,
    \'paged\' => get_query_var(\'paged\'),
);
$query=new WP_Query($args);

if ( $query->have_posts() ) while ( $query->have_posts() ) : $query->the_post(); global $post;
    $post_type=$post->post_type;
    if($post_type==\'photo\'){ ?>
        <li class="plist"><a href="<?php the_permalink(); ?>"> <h3><?php the_title(); ?></h3> </a> </li>
    <?php }  
    if($post_type==\'post\'){ ?>
        <li class="plist"><a href="<?php the_permalink(); ?>"> <h3><?php the_title(); ?></h3> </a> </li>
    <?php } 
endwhile;
?>

1 个回复
SO网友:engelen

您需要两个查询来实现这一点。无法在中指定每个帖子类型的限制WP_Query (无需修改原始SQL)。您只需查询帖子和照片并合并生成的数组:

// Fetch posts
$posts_query = new WP_Query( array(
    \'post_type\'=> \'post\',
    \'orderby\' => \'date\',
    \'posts_per_page\' => 10,
    \'paged\' => get_query_var( \'paged\' )
) );

// Fetch photos
$photos_query = new WP_Query( array(
    \'post_type\'=> \'photo\',
    \'orderby\' => \'date\',
    \'posts_per_page\' => 10,
    \'paged\' => get_query_var( \'paged\' )
) );

// List of merged photos and posts
$mergedposts = array();

for ( $i = 0; $i < 10; $i++ ) {
    // Add post to list
    if ( isset( $posts_query->posts[ $i ] ) ) {
        $mergedposts[] = $posts_query->posts[ $i ];
    }

    // Add photo to list
    if ( isset( $photos_query->posts[ $i ] ) ) {
        $mergedposts[] = $photos_query->posts[ $i ];
    }
}
然后,您应该使用setup_postdata (因为您不能使用the_post 超出查询范围)。

结束

相关推荐

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

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