5 fragmentów kodu stronicowania WordPress z przykładami [od prostych do zaawansowanych]
Opublikowany: 2020-02-03
Jeś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.
