it-swarm.com.de

Wie paginiere ich diese benutzerdefinierte Schleife?

jungs! Ich bin mir ziemlich sicher, dass dies ein Kinderspiel wird, aber ich versuche, meiner Schleife eine Paginierung hinzuzufügen. Ich habe einige Codes ausprobiert, die verfügbar waren, und musste sie paginieren, aber Seiten 2, 3 usw. hatten den gleichen Inhalt wie Seite 1. Was ist die beste Lösung für das, was ich im Moment habe?

<?php
    $recentPosts = new WP_Query();
    $recentPosts->query('showposts=5');
?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
    <article>
    </article>
<?php endwhile; ?>

Danke im Voraus.

1
Paulo Gabriel

Wahrscheinlich geschieht dies, weil Sie eine benutzerdefinierte Seitenvorlage verwenden. Versuche Folgendes. Ich habe die Schritte auf dem Weg kommentiert. Ich hoffe es hilft.

<?php 
  //get the current page
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

  //pagination fixes prior to loop
  $temp =  $query;
  $query = null;

  //custom loop using WP_Query
  $query = new WP_Query( array( 
    'post_status' => 'publish',
    'orderby' => 'date',
    'order' => 'ASC' 
  ) ); 

 //set our query's pagination to $paged
 $query -> query('post_type=post&posts_per_page=5'.'&paged='.$paged);

 if ( $query->have_posts() ) : 
   while ( $query->have_posts() ) : $query->the_post();
    ?>
      <li>
        <?php if ( has_post_thumbnail()) : ?>
          <?php the_post_thumbnail();?>
        <?php endif; ?>
        <div class="someclass" >
            <h2><?php the_title(); ?></h2> 
            <?php the_content(); ?>
        </div> 
      </li>
  <?php endwhile;?>

  <?php //pass in the max_num_pages, which is total pages ?>
  <div class="pagenav">
    <div class="alignleft"><?php previous_posts_link('Previous', $query->max_num_pages) ?></div>
    <div class="alignright"><?php next_posts_link('Next', $query->max_num_pages) ?></div>
  </div>

<?php endif; ?>

<?php //reset the following that was set above prior to loop
$query = null; $query = $temp; ?>
4
amespower

Hier ist mein Post-Typ 'news_events', die Paginierung wird nach jeweils 4 Post-Titeln angezeigt.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$news_events = array( 'post_type' => 'news_events', 'posts_per_page' => 4, 'paged' => $paged);
$wp_query = new WP_Query( $news_events );
if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post();?>
          <?php the_title(); echo "<br/>"; ?>
    <?php endwhile; ?>
    <nav>
      <?php previous_posts_link('&laquo; Newer',$wp_query->max_num_pages); ?>
      <?php next_posts_link('Older &raquo;',$wp_query->max_num_pages); ?>
    </nav>
    <?php wp_reset_postdata(); ?>                           
    <?php else : ?>
        <p><?php _e( 'Sorry, no news events posts at this time.', 'theme' ); ?></p>
<?php endif; ?>
0
Sindhu

Es gibt nur wenige Möglichkeiten, um Paginierung zu tun. Hier ist eine:

<?php $query = new WP_Query( array( 'posts_per_page' => 5 ) ); ?>

<?php while ($query->have_posts()) : $query->the_post(); ?>
   <article>
      <h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
   <article>
<?php endwhile; ?>

<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>

Natürlich funktioniert es nicht, wenn Ihre WP_Query nicht korrekt erstellt wurde.

0
shanebp