2016-11-30 5 views
1

Ich konnte keine definitive Antwort finden, wie ich Paginierung zu benutzerdefinierten Schleifen in WordPress hinzufügen sollte. Von dem, was ich aus dem Codex verstanden, ich soll get_posts() verwenden (oder bin ich falsch und ich sollte WP_Query oder query_posts verwenden?)Wordpress Paginierung mit get_posts

Lets sagen, dass ich eine benutzerdefinierte Post Typ entry Breite Taxonomie entry_cat haben und ich möchte anzuzeigen diejenigen mit der Kategorie cat-1 oder cat-2 und fügen Paginierung hinzu.

Mein Code meist funktioniert:

<?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), 
)); 
?> 

aber ich habe zwei Probleme mit ihm.

  1. Es kann nicht von der Titelseite verwendet werden.
  2. Es werden zweimal Einträge aus der Datenbank abgerufen, um sie zu zählen. Gibt es eine Funktion, die es mir ermöglicht, die Anzahl der Beiträge in einer Kombination von Taxonomien zu überprüfen, ohne sie abzufragen?

Bin ich das Problem sogar richtig? Wenn nicht, was wäre die beste Option?

Antwort

0

besser als die Verwendung von wp-Pagenavi Plugins und benutzerdefinierte Abfrage in Wordpress zum Beispiel dieses Probelm mit wp-Pagenavi Plugins:

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

Ich sehe nicht, wie wp-Pagenavi mir helfen kann. Von dem, was ich sehe, funktioniert Ihr Code ähnlich wie meiner. Sie haben WP_Query verwendet, also werde ich mit der Überprüfung beginnen, ob es meinen Code vereinfachen kann. –

Verwandte Themen