2017-08-22 8 views
0

ページにページネーションを追加しようとしていますが、表示される投稿の数を制限することすらできません。これは奇妙な問題です。設定 - >私は1ページあたりの投稿数が2に設定されているので、何の効果もありません。私のクエリとループは次のとおりです。WPページネーションが動作しない

<?php 
    $args = array(
      'post_type'   => array('webinar'), 
      'post_status'  => array('publish'), 
      'posts_per_page' => '2', 
      'order'    => 'DESC', 
      'orderby'   => 'date', 
      'tax_query' => array(
        array(
         'taxonomy' => 'webinar-status', 
         'field' => 'id', 
         'terms' => 178 
        ) 
       ) 
      ); 

      // The Query 

      $archived_webinar_query = new WP_Query($args); $counter = 1; 

      // The Loop 
      if ($archived_webinar_query->have_posts()) { 
       while ($archived_webinar_query->have_posts()) { 
        $archived_webinar_query->the_post(); ?> 
        <div class="classes<?php if ($counter % 2 == 0){ echo('f-right l-nmr'); } ?>"> 
         <a href="<?php the_permalink(); ?>" target="_self" class="c-ltBlue"><?php the_title(); ?> 
         //other stuff here 
        </div> 
       <?php $counter++ ;} 
       // Restore original Post Data 
       wp_reset_postdata(); 
      } else { ?> 
       <p class="l-twelve l-mb1 f-reg c-gray f-size16 f-l-height24">No archived webinars are available at this time.</p> 
      <?php } 


     ?> 
+1

てみ ' 'posts_per_page' => 2'、それは整数型です。 – Junaid

+0

posts_per_pageを2に設定して「効果がない」と言うと、それはまだすべての投稿を返すのですか、まったく返さないのですか? – FluffyKitten

+0

@Junaidありがとうございます。それはそれをした、私の部分で愚かな間違い! –

答えて

1

私のコメントによると、 'posts_per_page' => 2、これは整数型です。

あなたのコードは

<?php 
    $args = array(
     'post_type'   => array('webinar'), 
     'post_status'  => array('publish'), 
     'posts_per_page' => 2, 
     'order'    => 'DESC', 
     'orderby'   => 'date', 
     'tax_query' => array(
      array(
       'taxonomy' => 'webinar-status', 
       'field' => 'id', 
       'terms' => 178 
      ) 
     ) 
    ); 

    // The Query 

    $archived_webinar_query = new WP_Query($args); $counter = 1; 

    // The Loop 
    if ($archived_webinar_query->have_posts()) { 
     while ($archived_webinar_query->have_posts()) { 
      $archived_webinar_query->the_post(); ?> 
      <div class="classes<?php if ($counter % 2 == 0){ echo('f-right l-nmr'); } ?>"> 
       <a href="<?php the_permalink(); ?>" target="_self" class="c-ltBlue"><?php the_title(); ?> 
       //other stuff here 
      </div> 
     <?php $counter++ ;} 
     // Restore original Post Data 
     wp_reset_postdata(); 
    } else { ?> 
     <p class="l-twelve l-mb1 f-reg c-gray f-size16 f-l-height24">No archived webinars are available at this time.</p> 
    <?php } 

?> 

編集する必要があります:あなたはカウンタ変数を必要としない改善

WP_Queryオブジェクトは、これに対してプロパティを提供します。あなたの場合、$archived_webinar_query->current_postはループ内の現在の投稿のインデックスを表示します。

Reference to documentation

+0

カウンターはちょうどすべての2番目のdiv /ブロックにクラスを追加していました。 –

+0

@DirtyBirdDesign私はあなたがカウンターをどのように使用しているかを判断していません。私はちょうど 'WP_Query'自身の変数をカウンタとしてループ内で使うことができると言っています。 – Junaid

+0

ありがとうございました。素晴らしい解決策。 –

1

私はこの機能を使って数字のページ番号を付け加えてくれています。

私は多分あなたを助けるあなたにそれを掲載:)

をループglobal $wp_query;

の先頭にこれを追加した後theme_pagination($wp_query->max_num_pages);を使用し、あなたのfunctions.phpに

function theme_pagination($pages = '', $range = 3) 
{ 

     global $wp_query; 
     if (get_query_var('paged')) { $paged = get_query_var('paged'); } 
     elseif (get_query_var('page')) { $paged = get_query_var('page'); } 
     else { $paged = 1; } 

     $showitems = ($range * 2)+1; 

     if(empty($paged)) $paged = 1; 

     if($pages == '' && $pages != 0) 
     { 
     global $wp_query; 
     $pages = $wp_query->max_num_pages; 
     if(!$pages) 
     { 
      $pages = 1; 
     } 
    } 

    if(1 != $pages) 
    { 
     echo "<div class='pagination'>"; 
     if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>"; 
     if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>"; 

     for ($i=1; $i <= $pages; $i++) 
     { 
      if (1 != $pages &&(!($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems)) 
      { 
       echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>"; 
      } 
     } 

     if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a>"; 
     if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>&raquo;</a>"; 
     echo "</div>\n"; 
    } 

} 

を、この機能を追加wp_reset_postdata();

関連する問題