Stránkování

V rubrice: Tipy & Triky | Obtížnost:

Jak vám začínají příspěvky v bloku přibývat, je pro čtenáře stále těžší se v nich orientovat. Klasická funkce WordPressu pro starší a novější články už nestačí a pro navigaci musíte použít něco vyvinutějšího. Novou evoluční formou pro nás bude stránkování.

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…

V rubrice: Tipy & Triky | Obtížnost:

Komentáře

  1. To je podle mě až zbytečně složitý kód, stránkování lze jednoduše docílit pomocí funkce paginate_links().

    1. 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í.

Comments are closed.