我的代码发生了一些奇怪的事情

时间:2013-11-05 作者:Faisal

这是我的索引。php(我的主页)。它显示两个循环。第一个显示粘滞帖子,第二个显示所有帖子。这个<div id="primary"> 它位于第一个循环之后,没有出现在我的代码或css中的函数中。这是我的代码:

    <?php get_header(); ?>
<div id="top-homepage">
  <div id="featured">
  <!-- start sticky posts loop -->
    <?php
      $sticky = new WP_Query( array(
        \'showposts\' => 6,
        \'post__in\'  => get_option(\'sticky_posts\'),
        \'caller_get_posts\' => 1 ) 
      );
    while ( $sticky->have_posts() ) : $sticky->the_post(); ?>
      <div class="featured-post">
        <a href="<?php the_permalink(); ?>">
          <?php the_post_thumbnail( \'featuredposts\' ); ?>
          <h2 class="post-title">
            <?php echo get_the_title(); ?>
          </h2>
        </a>
      </div><!-- end featured-post -->
    <?php endwhile; ?>
      </div><!-- end featured -->
      <div class="clear"></div>
  </div> <!-- end top homepage -- >

<div id="primary">

<!-- Start the Loop. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php $countpost = $n++ ; ?>

<?php 

  if ($countpost % 2 == 0) { ?>

  <div class="left-post">

  <div class="clear"></div>

      <!-- Display the Title as a link to the Post\'s permalink. -->

      <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

      Its even

  </div>

<?php } else { ?>

<div class="right-post">

   <!-- Display the Title as a link to the Post\'s permalink. -->

 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 Its odd

</div>
<div class="clear"></div>

<?php } ?>


 <!-- Stop The Loop (but note the "else:" - see next line). -->

 <?php endwhile; else: ?>


 <!-- The very first "if" tested to see if there were any Posts to -->
 <!-- display.  This "else" part tells what do if there weren\'t any. -->
 <p>Sorry, no posts matched your criteria.</p>


 <!-- REALLY stop The Loop. -->
 <?php endif; ?>

</div><!-- end primary-->

<?php get_footer(); ?>
有人知道这个问题的解决方案吗?提前感谢

2 个回复
最合适的回答,由SO网友:ferenyl 整理而成

<!-- end top homepage -- >

这不是有效的注释。我怀疑这与此有关。我真的很讨厌那些拼写错误。很难找到。

SO网友:Mayeenul Islam

使用

wp_reset_postdata()
在第一个WP_Query() 结束(假设,第一次之后)endwhile;). 它将重置第一个循环,然后会给您一个新的循环(无论是默认循环还是新循环)。

»Codex: wp_reset_postdata()

编辑我认为caller_get_posts 是有罪的。因为自WP v.3.1以来,它已被弃用。使用ignore_sticky_posts 相反

ignore_sticky_posts (布尔)-忽略或不忽略粘性帖子(可用于Version 3.1, 已替换caller_get_posts 参数)。默认值为0-不要忽略粘性帖子。注意:忽略/排除返回的帖子开头包含的粘性帖子,但粘性帖子仍将按照返回帖子列表的自然顺序返回。(Source)

因此,当您使用:

\'caller_get_posts\' => 1
你实际上是在说:

\'ignore_sticky_posts\' => 1 //means IGNORE all the sticky posts
This WPSE thread 可以对这件事有所帮助。

结束

相关推荐

Querying Term Posts in Loop

我试图在标题下显示我的CPT类别以及与之相关的任何帖子。我有第一个循环,很好:<?php $cats = get_categories(array(\'taxonomy\' => \'custtax\', \'orderby\' => \'term_group\')); if(!empty($cats)) : foreach($cats as $cat) : ?> <a href=\"<?php