Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Paginacja numeryczna w WordPressie

Witryny internetowe oparte o WordPressa często mają zaimplementowaną nieefektywną paginację opartą o linki do poprzedniej/następnej strony z wpisami. Takie rozwiązanie ma bardzo wiele wad, a jedną z najważniejszych jest to, że nie możemy bezpośrednio przejść do np. najstarszych artykułów. Problem ten można rozwiązać stosując paginację numeryczną, czyli po prostu wyświetlając numery poszczególnych stron z wpisami. Co ciekawe takie rozwiązanie jest również bezpośrednio wspierane przez system WordPress.

Jak więc zrobić paginację numeryczną na stronie opartej o WordPressa?

Do tego celu wykorzystamy funkcję paginate_links(), która bezpośrednio wygeneruje nam listę stron.

Przykładowa implementacja (kod działa dla WordPressa od wersji 4.0):

global $wp_query;

paginate_links( array(
        'base' => @add_query_arg('paged','%#%'),
        'format' => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total' => $wp_query->max_num_pages,
        'prev_text' => __('« '),
        'next_text'    => __(' »'),
) );

Kod ten należy wkleić w miejscu w którym chcemy wyświetlić naszą paginację. Oczywiście należy dopisać do niego instrukcję echo() gdyż jak wcześniej wspomniałem funkcja paginate_links() wygeneruje nam tylko listę stron.

Napiszmy więc kompletną funkcję w PHP wyświetlającą paginację dla WordPressa (kod działa od wersji 4.0):

function pagination() {
    
    global $wp_query;
    
    if ($wp_query->max_num_pages > 1) { echo '<p class="pages" role="navigation">' . paginate_links( array(
        'base' => @add_query_arg('paged','%#%'),
        'format' => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total' => $wp_query->max_num_pages,
        'prev_text' => __('« '),
        'next_text'    => __(' »'),
    ) ) . '</p>'; }
}

Kod ten można zapisać np. w pliku function.php naszego szablonu i użyć w dowolnym miejscu:

<?php pagination(); /*wyświetlamy paginację*/ ?>

Nasz kod daje taki efekt:

  • Dla pierwszej strony:paginacja-przyklad
  • Dla strony ze środka:paginacja-przyklad2
  • Dla ostatniej strony:paginacja-przyklad3

Więcej na temat funkcji paginate_links() można znaleźć w dokumentacji WordPressa (wersja angielska): www.codex.wordpress.org/Function_Reference/paginate_links.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , , , , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany.

Pin It on Pinterest