代码之家  ›  专栏  ›  技术社区  ›  Charlie McShane

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

  •  3
  • Charlie McShane  · 技术社区  · 8 年前

    我在使用多个循环时遇到问题 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 回复  |  直到 8 年前
        1
  •  0
  •   raju_eww    8 年前

    请使用下面的代码

    <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>
    

    希望能有所帮助。

        2
  •  1
  •   Johannes    8 年前

    我想你应该走了 wp_reset_postdata(); 之后 endif; 在所有循环中

        3
  •  0
  •   Priyanka Modi    8 年前

    试试这个代码

    <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>
        4
  •  0
  •   Outsource WordPress    8 年前

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

    <?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();
    ?>
    
    推荐文章