php
  • wordpress
  • loops
  • count
  • taxonomy
  • 2016-03-23 6 views 1 likes 
    1

    私はカスタムクエリで少し悩んでいます。タクソノミを持つWordpressクエリのXの値が他のクエリよりも小さい場合

    基本的に私は、関連する "企業"(最大3人)の投稿を取得するクエリを持っています。クエリに3がない場合は、別のクエリを使用してスペースを埋めます(最大3)。私はそれがそれがすると思われることをすることを得ることができないようです。現在6を示している???どこが間違っているのか分かりません!誰もが正しい方向に私を指すことができれば

    $taxonomy = 'company'; 
    
    // Get the post company 
    $terms = wp_get_post_terms($the_post_id, $taxonomy); 
    
    $term_name = $terms[0]->name; 
    
    // Query for the related posts based on the company 
    $taxonomy_query = new WP_Query(array(
    
    'tax_query' => array(
        array(
         'taxonomy' => $taxonomy, 
         'field' => 'name', 
         'terms' => $term_name, 
        ), 
    ), 
    'post_type'=> 'post', 
    'post__not_in' => array($the_post_id), 
    'posts_per_page' => 3 
    )); 
    
    // Query for the non-related posts (use to fill the empty spaces) 
    $query = new WP_Query(array(
    
    'category_name' => $cat_name, 
    'post_type'=> 'post', 
    'post__not_in' => array($the_post_id), 
    'posts_per_page' => 3 
    )); 
    

    私はその後、事前に言っquerys

    <div class="l-row"> 
    
        <?php $count = 0; ?> 
    
        <?php if ($taxonomy_query->have_posts()) : ?> 
    
         <?php while ($taxonomy_query->have_posts()) : $taxonomy_query->the_post(); ?> 
    
         <?php $related_posts = get_post(); ?> 
    
         <?php $count++; ?> 
    
         <div class="l-col-sm-4"> 
    
          <?php _module('tile', array(
           'post' => $related_posts, 
           'image' => true, 
           'excerpt' => false 
          )); ?> 
         </div> 
    
         <?php endwhile; ?> 
    
        <?php endif; ?> 
    
        <?php wp_reset_query(); ?> 
    
        // New query to fill if the above query doesn't add up to 3 
    
        <?php if ($query->have_posts()) : ?> 
    
         <?php while ($query->have_posts()) : $query->the_post(); ?> 
    
         <?php $related_posts = get_post(); ?> 
    
         <?php $count++; ?> 
    
         <div class="l-col-sm-4"> 
    
          <?php _module('tile', array(
           'post' => $related_posts, 
           'image' => true, 
           'excerpt' => false 
          )); ?> 
    
         </div> 
    
         <?php if($count == 3) { 
          break; 
         } ?> 
    
         <?php endwhile; ?> 
    
        <?php endif; ?> 
    
        <?php wp_reset_query(); ?> 
    
    </div> 
    

    感謝の出力を持っています!

    答えて

    1

    あなたの問題はここにある(あなたのコードが動作すると仮定した場合)

    <?php if($count == 3) { 
         break; 
        } ?> 
    

    あなたが最初のクエリで3つのポストを持っている場合は、あなたのカウントが3である、あなたは、その今、上記のステートメントの前に4日の数を増やすと、 4に等しく、あなたの条件を満たすことなく続けます。

    より良いアプローチは、休憩をスクラップし、while文

    <?php while ($query->have_posts() && $count < 3) : $query->the_post(); ?> 
    
    を使用することです
    関連する問題