Hab trotzdem vielen Dank für Deine Zeit und Deine Mühe. Ich hab mal die Template-Designer wegen einer Lösung angeschrieben, da ich gesehen habe, dass deren Demo des Templates dasselbe Problem hat. Ist also broken by design. Hoffe, dass sie zeitnah reagieren. Wenn ich weiß, woran es gelegen hat, kann ich es ja hier posten.
Beiträge von cads
-
-
Das Verschieben der $nav_args hat leider auch keinen Effekt und eigenen Rewrite Rules habe ich nicht :-(
-
get_query_var('page') und $wp_query->query['paged'] ergeben kein Ergebnis.
Die Ausgabe des WP_Query Objects ergibt unter anderem die Werte
[paged] => 0
[posts_per_page] => 2
[max_num_pages] => 3
Die Variabel paged ändert sich nicht, egal ob ich /blog/, /blog/page/2/ oder /blog/page/3/ aufrufe. -
Hab es nochmals geändert. Nun erhalte ich auch den korrekten Wert für max_num_pages, aber der Wert für paged ist immer 0. Ich denke, genau das ist mein Problem.
-
Ok, hab es jetzt folgendermaßen gemacht. Nun wird aber gar keine Pagination mehr angezeigt.
PHP
Alles anzeigen<?php query_posts(array('post_type' => 'post')); ?> <?php if ( have_posts() ) : ?> <div class="posts"> <?php while ( have_posts() ) : the_post(); ?> <?php pragmaticmates_get_content_template(null, 'row') ?> <?php endwhile; ?> </div><!-- /.posts --> <?php $navargs = array( 'total' => get_query_var( 'max_num_pages' ), 'current' => get_query_var( 'paged' ), 'prev_text' => __('«'), 'next_text' => __('»') ); echo '<div class="pagination">'; echo '<nav>' . paginate_links( $navargs ) . '</nav>'; echo '</div>'; ?> <?php else: ?> <?php pragmaticmates_get_content_template() ?> <?php endif; ?>get_query_var( 'max_num_pages' ) ergibt gar keinen Wert,
get_query_var( 'paged' ) ist offensichtlich immer 0 -
In dem von Dir geposteten Beispiel werden die für $navargs benötigten Werte einem Objekt namens $query entnommen (z.B. $query->have_posts(), $query->max_num_pages, $query->query['paged']). Bei mir im Template gibt es aber keine Entsprechnung. Da heißt es einfach nur have_posts(). Woher dann der Wert bezogen wird, vermag ich nicht zu sagen.
-
Ich hab's so gemacht:
PHP
Alles anzeigen<?php query_posts(array('post_type' => 'post')); ?> <?php if ( have_posts() ) : ?> <div class="posts"> <?php while ( have_posts() ) : the_post(); ?> <?php pragmaticmates_get_content_template(null, 'row') ?> <?php endwhile; ?> </div><!-- /.posts --> <?php echo '<div class="pagination">'; echo '<nav>' . paginate_links( $navargs ) . '</nav>'; echo '</div>'; ?> <?php else: ?> <?php pragmaticmates_get_content_template() ?> <?php endif; ?> -
Die Pagination ist Bestandteil des Themes, welches ich verwende. Habe die Funktion mal gegen die von Dir genannte ausgetaucht, doch leider ist das Ergebnis dasselbe. Ich bekomme eine Pagination mit den entsprechenden Links angezeigt, aber jeder Link führt zum selben Ergebnis. Irgendetwas scheint mit der Query nicht zu stimmen, aber ich habe zu wenig Ahnung von WP, um den Fehler auszumachen.
-
Die Pagination wird korrekt angezeigt und die Links führen auch zu blog/page/2/, blog/page/3/, etc., aber leider werden immer dieselben drei Posts angezeigt. Hat jemand einen Tipp?
Das Template sieht so aus:
HTML
Alles anzeigen<?php query_posts(array('post_type' => 'post')); ?> <?php if ( have_posts() ) : ?> <div class="posts"> <?php while ( have_posts() ) : the_post(); ?> <?php pragmaticmates_get_content_template(null, 'row') ?> <?php endwhile; ?> </div><!-- /.posts --> <?php pragmaticmates_pagination(); ?> <?php else: ?> <?php pragmaticmates_get_content_template() ?> <?php endif; ?>Die dazugehörige Funktion lautet:
PHP
Alles anzeigenfunction pragmaticmates_pagination() { if( is_singular() ) return; global $wp_query; /** Stop execution if there's only 1 page */ if( $wp_query->max_num_pages <= 1 ) return; $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1; $max = intval( $wp_query->max_num_pages ); /** Add current page to the array */ if ( $paged >= 1 ) $links[] = $paged; /** Add the pages around the current page to the array */ if ( $paged >= 3 ) { $links[] = $paged - 1; $links[] = $paged - 2; } if ( ( $paged + 2 ) <= $max ) { $links[] = $paged + 2; $links[] = $paged + 1; } echo '<div class="center"><ul class="pagination">' . "\n"; /** Previous Post Link */ if ( get_previous_posts_link() ) printf( '<li class="pull-left">%s</li>' . "\n", _pragmaticmates_get_previous_posts_link() ); /** Link to first page, plus ellipses if necessary */ if ( ! in_array( 1, $links ) ) { $class = 1 == $paged ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( ! in_array( 2, $links ) ) echo '<li class="disabled"><a>...</a></li>'; } /** Link to current page, plus 2 pages in either direction if necessary */ sort( $links ); foreach ( (array) $links as $link ) { $class = $paged == $link ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Link to last page, plus ellipses if necessary */ if ( ! in_array( $max, $links ) ) { if ( ! in_array( $max - 1, $links ) ) echo '<li><a>...</a></li>' . "\n"; $class = $paged == $max ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Next Post Link */ if ( get_next_posts_link() ) printf( '<li class="pull-right">%s</li>' . "\n", _pragmaticmates_get_next_posts_link() ); echo '</ul></div>' . "\n"; }