I přes mnohé prosby ho WordPress stále nepodporuje ve své základní verzi. Existuje sice na to mnoho dobrých pluginů, které fungují velice dobře, ale čím méně jich máte, čím je váš web svižnější a nenáročnější. Je tedy lepší vložit řešení přímo do šablonu webu.
Vytvořit zdrojový kód pro stránkování je vcelku jednoduché, viz. níže:
$pocetStranek = ceil($wp_query->found_posts / get_settings('posts_per_page')); if ($pocetStranek > 1) { $aktualniStranka = absint(get_query_var('paged')); if ($aktualniStranka == 0) $aktualniStranka = 1; if ($aktualniStranka != 1) echo "<a href='" . get_pagenum_link($aktualniStranka - 1) . "'><=</a> "; for ($i = 1; $i <= $pocetStranek; $i++) { if ((($i >= ($aktualniStranka - 4) and $i < $aktualniStranka) or ($i > $aktualniStranka and $i <= ($aktualniStranka + 4)) or ($i == $pocetStranek and $index == ($i - 1))) and $i != $aktualniStranka) { $index = $i; echo "<a href='" . get_pagenum_link($i) . "'>$i</a> "; } elseif ($i == $aktualniStranka) { $index = $i; echo "<a href='" . get_pagenum_link($i) . "' class='active'>$i</a> "; } elseif ($i == 1 and !$index == 1) { echo "<a href='" . get_pagenum_link(1) . "'>1...</a> "; } elseif ($i == $pocetStranek AND $index < $pocetStranek) { echo "<a href='" . get_pagenum_link($pocetStranek) . "'>...$pocetStranek</a> "; } } if ($aktualniStranka != $pocetStranek) echo " <a href='" . get_pagenum_link($aktualniStranka + 1) . "'>=></a>"; }
Tento kód stačí jednoduše překopírovat do části šablony, kde chcete stránkování mít (většinou index.php, archive.php, search.php). Ještě si ho můžete vylepšit pomocí kaskádových stylů. Aktuální stránka má třídu active a ostatní už nějak vymyslíte sami…
4 responses to “Stránkování”
To je podle mě až zbytečně složitý kód, stránkování lze jednoduše docílit pomocí funkce paginate_links().
Ano to lze, ale takhle má člověk větší kontrolu nad tím, co přesně funkce vypisuje. Vždycky záleží co přesně je třeba udělat, takže obě řešení se mohou hodit. Díky za doplnění.
A nevíte o nějakém komplet hotovém řešení? Niki
Máte na mysli v podobě nějakého pluginu? Těch je hodně, například WP-Paginate – http://wordpress.org/extend/plugins/wp-paginate/