Zurück zur Übersicht
Wordpress Paginierung-Funktion
#Tutorials#Wordpress
In diesem Tutorial habe ich eine Funktion für euch, die eine Paginierung in eurem Wordpress-Blog hinzufügt.
Es ist relativ einfach - Fügt einfach die folgende Funktion in eure functions.php ein.
function get_pagination($range = 4){
// $paged - Nummer der derzeitigen Seite
global $paged, $wp_query;
// Wieviele Seiten haben wir?
if ( !$max_page ) {
$max_page = $wp_query->max_num_pages;
}
// Wir brauchen die Paginierung nur wenn es mehr als eine Seite gibt
if($max_page > 1){
if(!$paged){
$paged = 1;
}
// Auf der ersten brauchen wir nicht den Erste-Link
if($paged != 1){
echo "<a href=" . get_pagenum_link(1) . "> Erste </a>";
}
// Zu vorherigen Seite
previous_posts_link(' « ');
// Wir brauchen den Slideeffekt nur, wenn die Seiten den Umfang ($range) uebersteigt
if($max_page > $range){
// When closer to the beginning
if($paged < $range){
for($i = 1; $i <= ($range + 1); $i++){
echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged) echo "class='current'";
echo ">$i</a>";
}
}
//Wenn wir uns dem Ende naehern
elseif($paged >= ($max_page - ceil(($range/2)))){
for($i = $max_page - $range; $i <= $max_page; $i++){
echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged) echo "class='current'";
echo ">$i</a>";
}
}
// Irgendwo in der Mitte
elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){
echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged) echo "class='current'";
echo ">$i</a>";
}
}
}
// Weniger Seiten als der Umfang - keine Slide noetig
else{
for($i = 1; $i <= $max_page; $i++){
echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged) echo "class='current'";
echo ">$i</a>";
}
}
// Naechste Seite
next_posts_link(' » ');
// Auf der letzten Seite kein Letzte-Link
if($paged != $max_page){
echo " <a href=" . get_pagenum_link($max_page) . "> Letzte </a>";
}
}
}
Ich habe sie mit deutschen Kommentaren versehen, damit man weiß, wo was passiert. Als nächstes müsst ihr die Funktion nur aufrufen. Am besten sucht ihr in eurem Template, wo die Paginierung sonst erstellt wird. Bei Twentyten beispielsweise ist sie in der loop.php ganz oben und ganz unten. Dort fügt ihr dann folgenden Code ein:
<div class="paginationBottom">
<?php get_pagination(); ?>
</div>
Wenn ihr das erledigt habt, sollte schonmal die Paginierung herauskommen, aber ungestylt.
Das Styling auf meiner Seite sieht wie folgt aus. Natürlich könnt ihr die das Styling individuell anpassen.
/* Pagination */
.paginationBottom {
display: block;
text-align: right;
margin-top: 10px;
margin-bottom: 30px;
}
.paginationBottom a{
text-align:center;
padding:5px 10px;
margin:0 2px 0 2px;
border:1px solid #58585A;
}
.paginationBottom a:hover{
background:#8cc01e;
color: #fff;
}
.paginationBottom a.current {
border: 1px solid #F5F5F5;
}
Kommentare
Freue mich auf jede Antwort!
Grüße
weißt du wo die Paginierung im Theme twentytwelve vorgenommen wird? Habe ein Child-Theme angelegt, welches auf twentytwelve zugreift. Vielleicht sollte ich mir einfach eine loop.php in meinem Childtheme erstellen?
Gruß
Karsten
Hinterlasse einen Kommentar