5 fragmentów kodu stronicowania WordPress z przykładami [od prostych do zaawansowanych]

Opublikowany: 2020-02-03

kod paginacji w przykładach WordPress 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' => '&laquo;',
          'next_text' => '&raquo;'
     ) );
?>
</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.