在Wordpress中多次使用$ do_not_duplicate以避免重复发布帖子

时间:2011-06-11 12:21:29

标签: wordpress

我想知道你是否可以帮助我希望是一个易于解决的Wordpress问题?

我在http://www.totalbackpacker.co.uk创建了一个杂志风格的主题,页面顶部有三个“精选”故事,其次是下面最近的帖子。

使用$do_not_duplicate方法(http://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action),我已经能够省略在最近列表中显示为主要特色故事的帖子帖子......但是当我试图省略第二和第三个特色故事时我遇到了困难,大概是因为$do_not_duplicate只打算使用一次。

我正在使用以下方式展示主要故事:

<?php query_posts('category_name=editors-picks-main&posts_per_page=1'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post();
$do_not_duplicate = $post->ID; ?>

所以它基本上是从editors-picks-main类别中提取最新帖子。

“第二个”特色故事(来自editors-picks-sub-1类别的最新帖子)使用以下方式显示:

<?php query_posts('category_name=editors-picks-sub-1&posts_per_page=1'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

“第三个”精选故事(来自editors-picks-sub-2类别的最新帖子)使用:

<?php query_posts('category_name=editors-picks-sub-2&posts_per_page=1'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

对于最近的帖子部分(注意:帖子分布在两列,所以这段代码重复)我正在使用:

<?php query_posts('category_name=blog&posts_per_page=4'); ?>
<?php if (have_posts()) : ?>
<?php $count = 0; ?>
<?php while (have_posts()) : the_post();
if( $post->ID == $do_not_duplicate ) continue; ?>
<?php $count++; ?>
<?php if ($count == 1) : ?>
<h5 class="smaller"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h5>
<p class="editorspickssml"><?php the_excerpt(); ?></p>
<?php elseif ($count == 2) : ?>
Second post here
<?php elseif ($count == 3) : ?>
Third post here
<?php elseif ($count == 4) : ?>
Fourth post here
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

有没有人对我如何才能使这个工作有任何建议?我知道我需要在$do_not_duplicate = $post->ID; ?>editors-picks-sub-1的代码中添加与editors-picks-sub-2类似的内容...我只是不确定是什么!

我真的很感激任何提示!

先谢谢你的帮助,

马丁

1 个答案:

答案 0 :(得分:0)

收集变量中前三个“特色帖子”的ID。

在循环之前创建一个数组,以保存要排除的帖子的ID:

$exclude = new Array();

在第一个,第二个和第三个循环中,将帖子的ID添加到数组中:

array_push($exclude,$post->ID);

然后从最近的帖子查询中排除这些ID。

query_posts('category_name=blog&posts_per_page=4&post__not_in='.$exclude);

注意:我不确定你应该使用这样的查询帖子,它会进行大量的查询编辑。此外,如果您希望分页工作,则需要包含分页变量。