Hallo Liebe Leser von You Big Blog.
WordPress-PageNavi ohne Plugin habe ich bereit beschrieben in den Artikeln: Erste Variante und zweite Variante .
Inzwichen habe ich noch ein lösung funktion gefunden, das Resultat sieht in meinem Blog unten.Anleitung PageNavi ohne Plugin Teil 3:
functions.php offnen und folgende Code einfühgen:
function pagination($range = 3, $show_one_pager = true, $show_page_hint = false) { global $wp_query; $num_of_pages = (int)$wp_query->max_num_pages; if(!is_single() && $num_of_pages > 1) { $current_page = get_query_var('paged') === 0 ? 1 : get_query_var('paged'); $num_of_display_pages = ($range * 2) + 1; $output = '<div id="pagination">'; if($show_page_hint) { $output .= '<span>Seite ' . $current_page . ' von ' . $num_of_pages . '</span>'; } if($current_page > 2 && $current_page > $range + 1 && $num_of_display_pages < $num_of_pages) { $output .= '<a href="' . get_pagenum_link(1) . '" title="Seite 1 - Neueste Artikel">«'; } if($show_one_pager && $current_page > 1) { $output .= '<a href="' . get_pagenum_link($current_page - 1) . '" title="Seite ' . ($current_page - 1) . ' - Neuere Artikel">‹</a>'; } for($i = 1; $i < = $num_of_pages; $i++) { if($i < $current_page + $range + 1 && $i > $current_page - $range - 1) { if($current_page === $i) { $output .= '<span class="current">' . $i . '</span>'; } else { $output .= '<a href="' . get_pagenum_link($i) . '" title="Seite ' . $i . '" >' . $i . '</a>'; } } } if($show_one_pager && $current_page < $num_of_pages) { $output .= '<a href="' . get_pagenum_link($current_page + 1) . '" title="Seite ' . ($current_page + 1) . ' - Ältere Artikel">›'; } if($current_page < $num_of_pages - 1 && $current_page + $range < $num_of_pages && $num_of_display_pages < $num_of_pages) { $output .= '<a href="' . get_pagenum_link($num_of_pages) . '" title="Seite ' . $num_of_pages . ' - Älteste Artikel">»'; } $output .= '</div>'; return $output; } }
Dazugehörigen CSS-Code des Designs PageNavi, je nach Theme sollt ihr individuell Anpassen.
Kurze Erklärung zu den jeweiligen Codezeilen:
Zeile 4:
Wir weisen $num_of_pages die Anzahl der Seiten zu.
Zeile 6:
Die Pagination nur anzeigen, wenn die aktuelle Seite keine “Single-Page„ ist und mehr als 1 Seite vorhanden ist.
Zeile 8:
Der Variable $current_page wird die aktuelle Seite zugewiesen. Dabei ist zu beachten, dass wenn die aktuelle Seite die Seite 1 ist, die Funktion get_query_var(‚paged‘) 0 zurückliefert.
Zeile 9:
$num_of_display_pages wird die Anzahl der anzuzeigenden Seitenlinks zugewiesen. Dabei gibt $range an, wie viele Seitenlinks links bzw. rechts nebst dem Seitenlink der aktuellen Seite (maximal) angezeigt werden.
Zeile 13 – 16:
Wenn die Variable $show_page_hint wahr ist (true), dann geben wir den Hinweis aus, dass der Leser sich gerade auf „Seite X von Y“ befindet. X ist dabei die aktuelle Seite und Y die Anzahl aller Seiten.
Zeile 18 – 21:
Es wird ein Seitenlink auf der erste Seite (auf der die neuesten Artikel eures Blogs gelistet sind) angezeigt, wenn folgende Bedingungen erfüllt sind:die aktuelle Seite entspricht weder Seite 1 noch Seite 2
die aktuelle Seite ist größer als $range + 1
die Anzahl der anzuzeigenden Seitenlinks ist kleiner als die Gesamt-SeitenanzahlZeile 22 – 25:
Es wird ein Seitenlink auf die vorherige Seite der aktuellen Seite angezeigt, wenn folgende Bedingungen erfüllt sind:$show_one_pager ist true
die aktuelle Seite ist nicht die erste Seite (Seite 1)Zeile 27 – 40:
In einer for-Schleife durchlaufen wir alle Seiten. In Zeile 29 überprüfen wir dann, ob für die jeweilige Seite ($i) ein Seitenlink angezeigt wird. Dabei gilt die Bedingung, dass die Seite sich innerhalb der anzuzeigenden „Seitenrange“ ($range) befinden muss. Wenn das der Fall ist, dann geenrieren wir den dazugehörigen Seitenlink, außer wenn es sich um die aktuelle Seite handelt, da wir dann einfach nur ein -Element ausgeben.
Zeile 42 – 49:
Verhält sich analog zu dem Code aus Zeile 18 – 25:
Zeile 53:
Wir geben unsere generierte Ausgabe ($output) zurück.
Um die PageNavi in eurem WordPress-Blog anzuzeigen, müsst ihr am Ende eurer „WordPress-Loop“, die sich bei vielen Themes in der loop.php befindet (je nach Theme kann das aber abweichen), Folgendes einfügen:
Gode gehört ins (index.php) und (archive.php)
echo pagination();
je nach Theme sucht ihr Code Zeile< ?php endwhile; // end of the loop. ?> < ?php wp_reset_query(); // reset the query ?>
wp_reset_query();
mitecho pagination();
erzetzen
Weitere Beispiele findet im Blog
WordPress – nützliche Funktionen #4