5 fragmentów kodu stronicowania WordPress z przykładami [od prostych do zaawansowanych]
Opublikowany: 2020-02-03Jeśli szukasz najlepszego kodu paginacji w WordPressie z konkretnymi przykładami, przykłady fragmentów kodu paginacji udostępnione w tym poście będą bardzo przydatne. Możesz zastosować ten kod stronicowania w motywie WordPress lub w niestandardowej wtyczce WordPress, która wymaga stronicowania postów. Pozwól mi skrócić pościg i podzielić się moimi ulubionymi fragmentami kodu paginacji:
1) Pętla WordPress z prostym kodem stronicowania
Jeśli chcesz dodać paginację w pętli WordPress, możesz użyć następnego i poprzedniego kodu paginacji poniżej:
<?php if ( have_posts() ) : ?> <!-- Dodaj tutaj funkcje stronicowania. --> <!-- Początek głównej pętli. --> <?php while ( have_posts() ): the_post(); ?> <!-- reszta głównej pętli motywu --> <?php koniec; ?> <!-- Koniec pętli głównej --> <!-- Dodaj tutaj funkcje stronicowania. --> <div class="nav-previous alignleft"><?php previous_posts_link( 'Starsze posty' ); ?></div> <div class="nav-next alignright"><?php next_posts_link( 'Nowsze posty' ); ?></div> <?php jeszcze : ?> <p><?php _e('Przepraszamy, nie ma postów spełniających twoje kryteria.'); ?></p> <?php endif; ?>
#2) Paginacja numeryczna WordPress
Inną świetną opcją paginacji WordPressa jest użycie paginacji numerycznej, która dodaje numery do postów i grupuje posty na podstawie numeru. Na przykład możesz wyświetlić 5 postów na stronie. To jest kod paginacji w WordPressie dla paginacji numerycznej :
<?php #KROK 1: Utwórz numeryczną funkcję stronicowania WordPress funkcja njengah_numeric_pagination() { if( is_singular() ) powrót; globalne $wp_query; /** Zatrzymaj wykonywanie, jeśli jest tylko 1 strona */ if( $wp_query->max_num_pages <= 1 ) powrót; $paged = get_query_var( 'stronicowane' ) ? absint( get_query_var( 'stronicowane' ) ): 1; $max = intval($wp_query->max_num_pages); /** Dodaj bieżącą stronę do tablicy */ if ( $paged >= 1 ) $linki[] = $stronicowane; /** Dodaj strony wokół bieżącej strony do tablicy */ jeśli ( $stron. >= 3 ) { $linki[] = $stronicowane - 1; $linki[] = $paged - 2; } if ( ( $strona + 2 ) <= $max ) { $linki[] = $stronicowane + 2; $linki[] = $stronicowane + 1; } echo '<div class="navigation"><ul>' . "\n"; /** Poprzedni link do posta */ jeśli ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /** Link do pierwszej strony, w razie potrzeby plus wielokropek */ if ( ! in_array( 1, $linki )) { $klasa = 1 == $stronicowana ? ' class="aktywny"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( ! in_array( 2, $linki )) echo '<li>…</li>'; } /** Link do bieżącej strony, plus 2 strony w dowolnym kierunku, jeśli to konieczne */ sortuj( $linki ); foreach ( (tablica) $linki jako $link ) { $klasa = $stronicowana == $link ? ' class="aktywny"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Link do ostatniej strony, w razie potrzeby plus wielokropek */ if ( ! in_array( $max, $linki ) ) { if ( ! in_array( $max - 1, $linki )) echo '<li>…</li>' . "\n"; $klasa = $stronicowana == $max ? ' class="aktywny"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Link do następnego posta */ jeśli ( get_next_posts_link() ) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); echo '</ul></div>' . "\n"; } #KROK 2: Dodaj do szablonów za pomocą tego wywołania funkcji powyżej njengah_numeric_pagination(); #KROK 3: Dostosuj podział na strony odpowiednio, aby pasował do Twoich stylów tematycznych /** Klasy CSS do stylizacji stronicowania*/ .nawigacja li { } .linia nawigacji }
#3) Przykład paginacji WordPress Ajax
Jeśli szukasz kodu stronicowania Ajax w WordPressie, znalazłem przykład na GitHub, który działa bardzo dobrze, a kod jest w formie wtyczki. Dostosowałem go, aby stał się wtyczką do naszego samouczka, a kod można skopiować do pliku i zapisać w formacie zip i zainstalować jako wtyczkę. Poniżej znajduje się przykładowy kod stronicowania WordPress Ajax:
<?php /** * Nazwa wtyczki: Paginacja Njengah Ajax * URI wtyczki: https://njengah.com * Opis: przykład stronicowania WordPress Ajax. * Wersja: 1.0.0 * Autor: Joe Njenga * URI autora: https://njengah.com * Licencja: GPL-2.0+ * URI licencji: http://www.gnu.org/licenses/gpl-2.0.txt * Domena tekstowa: cs-paginacja * Ścieżka domeny: /języki */ // Kredyt - Casper Schultz klasa Njengah_Ajax_Paginacja { chroniona $liczba_na_stronę; funkcja publiczna __construct() { $this->num_per_page = 5; $this->init(); } funkcja chroniona init() { add_action( 'init', array( $this, 'add_rewrite_rule' ) ); add_filter( 'query_vars', array( $this, 'add_query_vars' ) ); add_action( 'parse_request', array( $this, 'parse_request' ) ); } /** * Przeanalizuj przychodzące żądanie i wygeneruj wynik. */ funkcja parse_request ( $wp ) { if ( array_key_exists( 'cs-page', $wp->query_vars ) ) { $page = isset ( $wp->query_vars['cs-page']) ? $wp->query_vars['cs-page'] : 1; $argumenty = tablica( 'post_type' => 'post', 'post_per_page' => $this->num_per_page, 'stronicowany' => $strona, ); $zapytanie = nowe WP_Query( $args ); // Musimy znać całkowitą liczbę znalezionych postów. $values['total'] = $query->found_posts; // I na stronę. $values['per_page'] = $this->num_per_page; $values['posts'] = array(); // Prześlijmy tylko te dane, których potrzebujemy. while ( $query->have_posts() ) { $zapytanie->post_(); $values['posts'][] = tablica( 'ID' => get_the_ID(), 'title' => get_the_title(), ); } wp_reset_postdata(); wp_send_json($wartości); } } /** * Dodaj potrzebne argumenty zapytania. */ funkcja add_query_vars( $query_vars ) { $query_vars[] = 'strona-cs'; zwróć $query_vars; } /** * Dodaje regułę przepisywania dla naszej niestandardowej paginacji, dzięki czemu możemy uniknąć używania admin-ajax. */ funkcja add_rewrite_rule() { add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', 'top' ); } /** * Zasady przepisywania w kolorze. */ funkcja statyczna install() { flush_rewrite_rules(); } } funkcja njengah_ajax_pagination_init() { nowy Njengah_Ajax_Pagination(); } njengah_ajax_pagination_init(); // Konieczność opróżnienia reguł przepisywania przy aktywacji. register_activation_hook( __FILE__, array( 'Njengah_Ajax_Pagination', 'instalacja' ) );
4) Paginacja WordPress dla niestandardowego typu postu
W przypadku niestandardowej paginacji typu postu musisz użyć WP_query, aby sprawdzić niestandardowy typ postu, a w argumentach przekazać niestandardowy typ postu w post_type, a następnie użyć kodu paginacji, aby utworzyć paginację WordPress dla niestandardowego typu postu.
Poniżej znajduje się kod, który powinieneś dodać do functions.php i zastąpić post_type odpowiednim niestandardowym ślimakiem typu post:
<?php /** * Paginacja WordPress dla niestandardowych typów postów */ <?php $paged = ( get_query_var( 'stronicowane' ) ) ? get_query_var( 'stronicowane' ) : 1; $argumenty = tablica( 'post_type' => 'custom_post_type_name', 'posts_per_page' => 10, 'stronicowany' => $stronicowany ); $pętla = nowe WP_Query( $args ); while ( $loop->have_posts() ): $loop->the_post(); // Niestandardowa treść wpisu koniec; ?> <nav class="paginacja"> <?php $duży = 999999999; echo strony_linki( tablica( 'base' => str_replace( $duży, '%#%', get_pagenum_link( $duży ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $pętla->max_num_pages, 'prev_text' => '«', 'next_text' => '»' ) ); ?> </nav> <?php wp_reset_postdata(); ?>
#5 Niestandardowe dzielenie zapytań WordPress
Niestandardowy kod stronicowania zapytania w WordPress wykorzystuje WP_query, aby uzyskać określony post, który chcemy podzielić na strony, a następnie łączy wyniki zapytania z kodem paginacji, aby zastosować paginację do określonych wybranych przez nas postów. Poniżej znajduje się przykład niestandardowej stronicowania zapytań w WordPress.
<?php //Niestandardowe zapytanie $paged = ( get_query_var( 'stronicowane' ) ) ? absint( get_query_var( 'stronicowane' ) ): 1; $argumenty = tablica( 'posts_per_page' => 5, 'category_name' => 'galeria', 'stronicowany' => $stronicowany, ); $the_query = nowe WP_Query( $args ); ?> <!-- pętla itp.. --> <?php // Paginacja $duży = 999999999; // potrzebujesz nieprawdopodobnej liczby całkowitej echo strony_linki( tablica( 'base' => str_replace( $duży, '%#%', esc_url( get_pagenum_link( $duży ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $the_query->max_num_pages ) );
Wniosek
W tym poście podkreśliliśmy różne typy paginacji WordPressa i udostępniliśmy konkretny kod paginacji do użycia w każdym przypadku. Ten kod stronicowania w WordPressie może być dodany do istniejących motywów lub wtyczek, a także może być dodany do WordPressa jako samodzielna wtyczka.