我想知道你是否可以帮助我希望是一个易于解决的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
类似的内容...我只是不确定是什么!
我真的很感激任何提示!
先谢谢你的帮助,
马丁
答案 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);
注意:我不确定你应该使用这样的查询帖子,它会进行大量的查询编辑。此外,如果您希望分页工作,则需要包含分页变量。