隐藏第二页上的特色帖子

时间:2012-02-19 作者:Jan Henckens

我有一个索引。php中有一篇特色文章和许多其他文章,底部有标准的wp\\U pagenavi。

我使用的是wordpress codex 像这样:

<?php $my_query = new WP_Query(\'category_name=featured&posts_per_page=1\');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;?>
  <!-- Do stuff... -->
<?php endwhile; ?>
  <!-- Do other stuff... -->
<?php if (have_posts()) : while (have_posts()) : the_post(); 
if( $post->ID == $do_not_duplicate ) continue; ?>
 <!-- Do stuff... -->
<?php endwhile; endif; ?>
如果我正确地阅读了主题层次结构,则会创建一个存档。在分页部分单击“上一页”时应使用php页面。。。(正确吗?)

然而,事实并非如此,单击“上一步”会显示一个与索引布局相同的页面。php,因此具有相同的特色帖子。(不过,在其他帖子上分页确实有效)

我一直在胡闹is_paged 但还没能让它工作。。。谢谢你的帮助!

4 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

简而言之,否-使用的模板基于查询,分页时基本上是重复相同的查询,但针对不同的页面。通常,模板是相同的。

archive.php 可用于大多数查询,但通常存在更好的模板(例如类别模板、标记模板、作者模板等)。更可取的是由template hierarchy. 然而,对于主页,index.php 经常使用,模板将保留分页。

至于只显示“第1页”上的内容,您可以尝试以下操作:

<?php 
 //initialize $do_not_duplicate
 $do_not_duplicate=0;
 //is_paged returns true if we are on page 2,3,...
 if(!is_paged()):
      //Get featured content for page 1
      $my_query = new WP_Query(\'category_name=featured&posts_per_page=1\');
      while ($my_query->have_posts()) : $my_query->the_post();
           $do_not_duplicate = $post->ID;
           //Do stuff...
      endwhile;
 endif;

 //Display rest of content
 if (have_posts()) : 
    while (have_posts()) : the_post(); 
         if( $post->ID == $do_not_duplicate ) continue;
         //Do stuff
    endwhile; 
  endif; 
 ?>
未测试

SO网友:Matthew Boynes

is_paged 只是一个布尔函数,用于判断列表是否有多个页面。

您需要的是:$wp_query->query_vars[\'paged\']. 在您的特色邮政编码周围,

global $wp_query;
if ( !isset($wp_query->query_vars[\'paged\']) || $wp_query->query_vars[\'paged\'] == 1 ) :
# Featured post code
endif;
我想这会对你有好处的。

SO网友:kaiser

简单:WP为此投入了大量资金。无需直接访问阵列/对象。

// Before the loop
$paged = get_query_var( \'paged\' );

// In the loop
if ( 
    ( ! isset( $paged )  OR ! $paged )
    AND is_sticky( get_the_ID() )
{
    // do stuff
}

SO网友:Brad Dalton

在自定义函数中添加此条件语句。

if ( is_home() && get_query_var( \'paged\' ) >= 2 ) 

结束

相关推荐

simply loop through posts

我知道这是一个真正的新手问题,但我似乎无法从帖子中获得循环。它所做的只是从页面本身中提取。我制作了一个模板并添加了循环。<?php if( have_posts() ) { while( have_posts() ) { the_post(); ?> <h2><?php the_title(); ?></h2> <?php } } ?>