2016-11-30 11 views
1

WordPressのカスタムループにページネーションを追加する方法について、明確な答えが見つかりませんでした。私はコーデックスから理解何から私はget_posts()を使用するようになってる(または私は間違っていると私はWP_Queryまたはquery_postsを使用する必要がありますか?)get_postsを使用したWordpressページ番号

は、私は、カスタムポストタイプentry幅分類entry_catに考えてみましょうと私が表示したいですカテゴリcat-1またはcat-2のものを使用し、改ページを追加します。

私のコードは、主に動作します:

<?php 
$pageda = get_query_var('paged') ? get_query_var('paged') : 1; 
$posts_per_page = get_option('posts_per_page'); 
$post_offset = ($pageda - 1) * $posts_per_page; 
$args = array(
    'numberposts' => $posts_per_page, 
    'post_type'  => 'entry', 
    'offset'  => $post_offset, 
    'tax_query'  => array(
     'relation' => 'OR', 
     array(
      'taxonomy' => 'entry_cat', 
      'field'  => 'slug', 
      'terms'  => 'cat-1', 
     ), 
     array(
      'taxonomy' => 'entry_cat', 
      'field'  => 'slug', 
      'terms'  => 'cat-2', 
     ), 
    ), 
); 
$posts=get_posts($args); 
$args['numberposts'] = -1; 
$posts_count=count(get_posts($args)); 
if($posts): 
foreach($posts as $post): 
?> 
    <?php the_title() ?><br /> 
<?php 
endforeach; 
endif; 
echo paginate_links(array(
    'current' => $pageda, 
    'total'  => ceil($posts_count/$posts_per_page), 
)); 
?> 

が、私はそれには2つの問題があります。

  1. フロントページには使用できません。
  2. データベースから投稿を数えて2回取得します。 クエリを使用せずにタクソノミーの組み合わせ内の投稿の数を確認できる機能はありますか?

問題に正しく遭遇していますか?そうでない場合、最良の選択肢は何ですか? WP-pagenaviプラグインで、たとえばワードプレスでは、このprobelmをWP-pagenaviプラグインやカスタムクエリを使用してより良い

答えて

0

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$myquery = new WP_Query(
    array(
     'posts_per_page' => '2', 
     'paged'=>$paged 
     // add any other parameters to your wp_query array 
    ) 
); 
?> 

<?php 
if ($myquery->have_posts()) : while ($myquery->have_posts()) : $myquery->the_post(); 
?> 

<!-- Start your post. Below an example: --> 

<div class="article-box">        
<h2 class="article-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
<p class="article-excerpt"><?php echo(get_the_excerpt()); ?></p>       
</div> 

<!-- End of your post --> 

<?php endwhile; ?> 
<?php wp_pagenavi(array('query' => $myquery)); ?><!-- IMPORTANT: make sure to include an array with your previously declared query values in here --> 
<?php wp_reset_query(); ?> 
<?php else : ?> 
<p>No posts found</p> 
<?php endif; ?> 
+0

私はWP-pagenaviが私を助けることができる方法を見ていません。あなたのコードは私のものと同じように動作します。あなたはWP_Queryを使用していましたので、まずコードを単純化できるかどうかをチェックします。 –

関連する問題