最新的4个帖子,不包括类别,附加排除类别的最新帖子

时间:2016-01-26 08:55:14

标签: php wordpress

我需要建立一个'公告'横幅显示5个最新帖子,其中一个MUST是最新的时事通讯。

我想做什么:最新的4个帖子,不包括时事通讯类别+最新的时事通讯帖子作为第5个帖子。

这怎么可能?

我尝试了tax_query,但之后只显示了newsletter类别,并没有限制该特定类别。

我尝试排除newsletter类别中的所有帖子ID,但如果最近5个帖子中没有新闻简报,则根本不会显示最新的简报。

代码:

$category_id = get_cat_ID('Newsletter');
$latest_newsletter = query_posts("cat=$category_id&order_by=date");
$exclude_ids = [];
$count = 0;
while (have_posts()) : the_post();
    $post = get_post();
    if($count > 0) {
        $exclude_ids[] = $post->ID;
    }
    $count++;
endwhile;
wp_reset_query();
query_posts(['posts_per_page' => '4', 'order_by' => 'date', 'post__not_in' => $exclude_ids]); if (have_posts()) : ?>
<div class="news-announcement">
    <h3>ANNOUNCEMENT</h3>
    <div id="ticker" class="ticker">
        <ul>
            <?php while ( have_posts() ) : the_post(); ?>
                <li><a href="<?php the_permalink(); ?>" title="Continue reading"> continue reading...</a>
                    <?php the_title(  ); ?></li>
            <?php endwhile; ?>
        </ul>
    </div>
</div>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建两个单独的查询对象来实现您想要的效果。 例如

 //this is just an example not complete code
// write you actual query in the array passed to WP_Query
 $latest_articles = new WP_Query( array('order' => 'DESC', 'posts_per_page ' => 4) );

while ( $latest_articles->have_posts() ) : 
    // Loop over the posts and show the content

 $newletter_article = new WP_Query( array('order' => 'DESC', 'posts_per_page'=> 1, 'cat' => 1 ) );

while ( $newletter_article->have_posts() ) : 
 //show the newletter article