多页Wordpress在一页中循环,产生相同的数据

时间:2018-07-25 13:13:31

标签: php html wordpress filter

我在header.php文件中使用多个循环时遇到问题。问题是所有部分都显示最终循环的结果,而不是它们自己的结果。这是我的代码:

        <div class="catagory active face">
          <?php /*-- Body --*/
            $args01 = array('post_type' => 'services','category' => 'face',);
            $loop01 = new WP_Query( $args01 );
            if ( $loop01->have_posts() ) :
              while ( $loop01->have_posts() ) : $loop01->the_post();
                echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
              endwhile; wp_reset_postdata();
            endif;
          ?>
        </div>

        <div class="catagory hide breast">
          <?php /*-- Body --*/
            $args02 = array('post_type' => 'services','category' => 'breast',);
            $loop02 = new WP_Query( $args02 );
            if ( $loop02->have_posts() ) :
              while ( $loop02->have_posts() ) : $loop02->the_post();
                echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
              endwhile; wp_reset_postdata();
            endif;
          ?>
        </div>

        <div class="catagory hide body">
          <?php /*-- Body --*/
            $args03 = array('post_type' => 'services','category' => 'body',);
            $loop03 = new WP_Query( $args03 );
            if ( $loop03->have_posts() ) :
              while ( $loop03->have_posts() ) : $loop03->the_post();
                echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
              endwhile; wp_reset_postdata();
            endif;
          ?>
        </div>

关于为什么前两个循环显示第三个循环结果的任何想法?我在这里想念什么?

4 个答案:

答案 0 :(得分:1)

我认为您应该在所有循环中将wp_reset_postdata();移到之后 endif;

答案 1 :(得分:0)

尝试此代码

<div class="catagory active face">
          <?php /*-- Body --*/
            $do_not_duplicate = array();
            $args01 = array('post_type' => 'services','category' => 'face',);
            $loop01 = new WP_Query( $args01 );
            if ( $loop01->have_posts() ) :
              while ( $loop01->have_posts() ) : $loop01->the_post();
                $do_not_duplicate[] = $post->ID;
                echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
              endwhile; wp_reset_postdata();
            endif;
          ?>
        </div>

        <div class="catagory hide breast">
          <?php /*-- Body --*/
            $args02 = array('post_type' => 'services','category' => 'breast',);
            $loop02 = new WP_Query( $args02 );
            if ( $loop02->have_posts() ) :
              while ( $loop02->have_posts() ) : $loop02->the_post();
                $do_not_duplicate[] = $post->ID; 
                echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
              endwhile; wp_reset_postdata();
            endif; 
          ?>
        </div>

        <div class="catagory hide body">
          <?php /*-- Body --*/
            $args03 = array('post_type' => 'services','category' => 'body',);
            $loop03 = new WP_Query( $args03 );
            if ( $loop03->have_posts() ) :
              while ( $loop03->have_posts() ) : $loop03->the_post();
                $do_not_duplicate[] = $post->ID; 
                echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
              endwhile; wp_reset_postdata();
            endif;
          ?>
        </div>

答案 2 :(得分:0)

希望您使用自定义分类法作为类别,因此您需要使用“分类法”查询。使用下面的代码并根据需要循环。

<?php
$tax01 = array('taxonomy' => 'service_category','terms' =>5); // replace taxonmy name & id here
$args01 = array('post_type' => 'services','tax_query' => array($tax01));
$loop01 = new WP_Query( $args01 );
if ( $loop01->have_posts() ) :
    while ( $loop01->have_posts() ) : $loop01->the_post();
        echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
    endwhile;
endif;
wp_reset_query();
?>

答案 3 :(得分:0)

请使用以下代码

<div class="catagory active face">
  <?php 
      $args01 = array('post_type' => 'services',
                      'tax_query' => array(
                                     array(
                                        'taxonomy' => 'your_taxonomy_name',
                                        'field' => 'slug',
                                        'terms' => 'face' 
                                      )));
      $loop01 = new WP_Query( $args01 );   
      if ( $loop01->have_posts() ) :
          while ( $loop01->have_posts() ) : $loop01->the_post();
            echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
          endwhile; wp_reset_postdata();
      endif; ?>
</div>

<div class="catagory hide breast">
  <?php 
      $args02 = array('post_type' => 'services',
                      'tax_query' => array(
                                      array(
                                        'taxonomy' => 'your_taxonomy_name',
                                        'field' => 'slug',
                                        'terms' => 'breast' 
                                      )));
      $loop02 = new WP_Query( $args02 );
      if ( $loop02->have_posts() ) :
        while ( $loop02->have_posts() ) : $loop02->the_post();
          echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
        endwhile; wp_reset_postdata();
      endif; ?>
</div>

<div class="catagory hide body">
  <?php 
      $args03 = array('post_type' => 'services',
                      'tax_query' => array(
                                      array(
                                        'taxonomy' => 'your_taxonomy_name',
                                        'field' => 'slug',
                                        'terms' => 'body' 
                                      )));
      $loop03 = new WP_Query( $args03 );
      if ( $loop03->have_posts() ) :
        while ( $loop03->have_posts() ) : $loop03->the_post();
          echo '<p><a class="text-white" href="'.get_permalink().'">'.get_the_title().'</a></p>';
        endwhile; wp_reset_postdata();
      endif; ?>
</div>

希望这会有所帮助。