0

我有 2 个循环。在第一个循环中,显示了 3 个最近的置顶帖子。在第二个帖子中显示了所有帖子(粘性和非粘性)。现在我想在第二个循环中删除 3 个最近的置顶帖子。

我尝试了类似的方法,但它从两个循环中删除了所有粘性帖子,而不是从 loop2 中删除了一些粘性帖子。// 编辑:我的两个循环的代码:

<?php
$sticky = get_option('sticky_posts'); // Get all sticky posts.
rsort($sticky); // Sort sticky posts in reverse order.
$sticky = array_slice($sticky, 0, 3); // Number of sticky posts to show.
$latestStickyPosts = $sticky;

$loop1query = new WP_Query(array('post__in' => $sticky, 'ignore_sticky_posts' => 1));

// START 1ST LOOP.
while ($loop1query->have_posts()) : $loop1query->the_post();
$do_not_duplicate[] = $post->ID; // global. ?>
<div> ... </div>
<?php endwhile;
// END 1ST LOOP.


$showposts = 5; // Show posts per page. 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('category__in' => $cat, 'showposts' => $showposts, 'paged' => $paged);

$loop2query = new WP_Query($args);

// START 2ND LOOP.
query_posts($args); if(have_posts()) : while (have_posts()) : the_post(); 
if( in_array($post->ID, $latestStickyPosts ) continue; ?>
<div> ... </div>
<?php endwhile; endif;
// END 2ND LOOP. ?>

我不在乎帖子在后端是否真的不粘。它们应该以这种方式显示:loop1 = 3 最近的便笺。loop2 = 其余的置顶帖和所有非置顶帖

感谢您的任何帮助或建议!

4

1 回答 1

0

我没有在您的代码中看到第一个循环,但由于您正在循环第二个中的所有帖子,您可以保留一个数组,其中包含您不需要再次显示的粘性帖子的 3 个 ID。

假设你有一个数组$latestStickyPosts,那么你可以这样做:

query_posts($args); if(have_posts()) : while (have_posts()) : the_post(); 
if (in_array($post->ID, $latestStickyPosts)) continue; ?>

有关更多信息,请查看此文档

于 2012-12-20T19:38:59.807 回答