5 fragmente de cod de paginare WordPress cu exemple [de la simplu la avansat]
Publicat: 2020-02-03Dacă sunteți în căutarea celui mai bun cod de paginare în WordPress cu exemple specifice, veți găsi exemplele de fragmente de cod de paginare distribuite în această postare ca fiind foarte utile. Puteți aplica acest cod de paginare în tema WordPress sau într-un plugin WordPress personalizat care necesită paginarea postărilor. Permiteți-mi să renunț la urmărire și să împărtășesc fragmentele mele preferate de cod de paginare:
#1) Buclă WordPress cu cod de paginare simplu
Dacă doriți să adăugați paginare în bucla WordPress, puteți utiliza codul de paginare următor și anterior de mai jos:
<?php if ( have_posts() ) : ?> <!-- Adăugați aici funcțiile de paginare. --> <!-- Începutul buclei principale. --> <?php while ( have_posts() ): the_post(); ?> <!-- restul buclei principale a temei dvs. --> <?php endwhile; ?> <!-- Sfârșitul buclei principale --> <!-- Adăugați aici funcțiile de paginare. --> <div class="nav-previous alignleft"><?php previous_posts_link( 'Postări mai vechi'); ?></div> <div class="nav-next alignright"><?php next_posts_link( 'Postări mai noi'); ?></div> <?php else : ?> <p><?php _e('Ne pare rău, nicio postare nu corespunde criteriilor dvs.'); ?></p> <?php endif; ?>
#2) Paginare numerică WordPress
O altă opțiune grozavă de paginare WordPress este să folosești paginarea numerică care adaugă numere la postări și grupează postările pe baza unui număr. De exemplu, puteți afișa 5 postări pe o pagină. Acesta este codul de paginare în WordPress pentru paginarea numerică :
<?php # PASUL 1: Creați funcția de paginare numerică WordPress funcția njengah_numeric_pagination() { if( este_singular()) întoarcere; global $wp_query; /** Opriți execuția dacă există doar 1 pagină */ if( $wp_query->max_num_pages <= 1 ) întoarcere; $paged = get_query_var( 'paginat' ) ? absint( get_query_var( 'paginat' ) ): 1; $max = intval( $wp_query->max_num_pages); /** Adăugați pagina curentă la matrice */ dacă ( $paginat >= 1 ) $linkuri[] = $paginat; /** Adăugați paginile din jurul paginii curente la matrice */ dacă ( $paginat >= 3 ) { $linkuri[] = $paginat - 1; $linkuri[] = $paginat - 2; } if ( ( $paginat + 2 ) <= $max ) { $linkuri[] = $paginat + 2; $linkuri[] = $paginat + 1; } echo '<div class="navigation"><ul>' . „\n”; /** Link postarea anterioară */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /** Link către prima pagină, plus elipse dacă este necesar */ dacă ( ! în_array( 1, $linkuri ) ) { $clasa = 1 == $paginat ? ' class="activ"': ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); dacă ( ! in_array( 2, $linkuri ) ) ecou „<li>…</li>”; } /** Link către pagina curentă, plus 2 pagini în ambele direcții, dacă este necesar */ sort($linkuri); foreach ( (matrice) $linkuri ca $link ) { $clasa = $paginat == $link ? ' class="activ"': ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Link către ultima pagină, plus elipse dacă este necesar */ dacă ( ! în_array( $max, $linkuri ) ) { dacă ( ! în_array( $max - 1, $linkuri ) ) ecou „<li>…</li>” . „\n”; $clasa = $paginat == $max ? ' class="activ"': ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Link postarea următoare */ dacă (get_next_posts_link()) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); ecou '</ul></div>' . „\n”; } # PASUL 2: Adăugați la șabloane folosind acest apel la funcția de mai sus njengah_numeric_pagination(); # PASUL 3: Stilează paginarea în mod corespunzător pentru a se potrivi stilurilor tale teme /** Clase CSS pentru stilarea paginației*/ .navigation li { } .navigation li a{ }
#3) Exemplu de paginare Ajax WordPress
Dacă cauți codul de paginare Ajax în WordPress, am găsit un exemplu pe GitHub care funcționează foarte bine și codul este sub formă de plugin. L-am personalizat pentru a face un plugin pentru tutorialul nostru, iar codul poate fi copiat într-un fișier și salvat în format zip și instalat ca plugin. Următorul este exemplul de cod de paginare WordPress Ajax:
<?php /** * Nume plugin: Njengah Ajax Pagination * URI plugin: https://njengah.com * Descriere: exemplu de paginare WordPress Ajax. * Versiunea: 1.0.0 * Autor: Joe Njenga * URI autor: https://njengah.com * Licență: GPL-2.0+ * URI licență: http://www.gnu.org/licenses/gpl-2.0.txt * Domeniu text: cs-pagination * Calea domeniului: /limbi */ // Credit - Casper Schultz clasa Njengah_Ajax_Pagination { protejat $num_per_page; funcția publică __construct() { $this->num_per_page = 5; $this->init(); } funcția protejată 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' ) ); } /** * Analizați cererea primită și generați rezultatul. */ funcția parse_request( $wp ) { dacă ( array_key_exists( 'cs-page', $wp->query_vars ) ) { $page = isset ( $wp->query_vars['cs-page'] ) ? $wp->query_vars['cs-page'] : 1; $args = matrice( 'post_type' => 'postare', 'post_per_page' => $this->num_per_page, 'paged' => $pagina, ); $interogare = new WP_Query( $args ); // Trebuie să știm numărul total de postări găsite. $values['total'] = $query->found_posts; // Și pe pagină. $values['per_page'] = $this->num_per_page; $values['posts'] = array(); // Să trimitem doar datele de care avem nevoie. while ( $interogare->have_posts() ) { $interogare->the_post(); $values['posts'][] = array( 'ID' => get_the_ID(), 'title' => get_the_title(), ); } wp_reset_postdata(); wp_send_json($valori); } } /** * Adăugați argumentele de interogare necesare. */ funcția add_query_vars( $query_vars ) { $query_vars[] = 'cs-page'; returnează $query_vars; } /** * Adaugă o regulă de rescriere pentru paginarea noastră personalizată, astfel încât să putem evita utilizarea admin-ajax. */ funcția add_rewrite_rule() { add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$match[1]', 'top' ); } /** * Flush regulile de rescriere. */ funcția statică install() { flush_rewrite_rules(); } } funcția njengah_ajax_pagination_init() { nou Njengah_Ajax_Pagination(); } njengah_ajax_pagination_init(); // Trebuie să ștergeți regulile de rescriere la activare. register_activation_hook( __FILE__, array('Njengah_Ajax_Pagination', 'install'));
#4) Paginare WordPress pentru tipul de postare personalizat
Pentru paginarea tipului de postare personalizat, trebuie să utilizați WP_query pentru a verifica tipul de postare personalizat și în argumente, treceți tipul de postare personalizat în post_type și apoi utilizați codul de paginare pentru a crea paginarea WordPress pentru tipul de postare personalizat.
Următorul este codul pe care ar trebui să-l adăugați la functions.php și să înlocuiți post_type cu tipul de post personalizat respectiv:
<?php /** * Paginare WordPress pentru tipuri de postări personalizate */ <?php $paginat = ( get_query_var( 'paginat' ) ) ? get_query_var('paginat'): 1; $args = matrice( 'post_type' => 'nume_tip_post_personalizat', 'posts_per_page' => 10, 'paginat' => $paginat ); $bucla = new WP_Query($args); while ( $bucla->have_posts() ): $bucla->the_post(); // Conținut personalizat tip postare sfârşitul timpului; ?> <nav class="pagination"> <?php $mare = 999999999; echo paginate_links( array( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paginat') ), 'total' => $loop->max_num_pages, 'prev_text' => '«', 'next_text' => '»' ) ); ?> </nav> <?php wp_reset_postdata(); ?>
# 5 Paginare personalizată a interogărilor WordPress
Codul de paginare a interogării personalizate din WordPress utilizează WP_query pentru a obține postarea specifică pe care dorim să o paginați și apoi combină rezultatele interogării cu codul de paginare pentru a aplica paginarea la postările specifice pe care le-am selectat. Următorul este un exemplu de paginare personalizată a interogărilor în WordPress.
<?php //Interogare personalizată $paginat = ( get_query_var( 'paginat' ) ) ? absint( get_query_var( 'paginat' ) ): 1; $args = matrice( 'posts_per_page' => 5, 'category_name' => 'galerie', 'paginat' => $paginat, ); $the_query = new WP_Query($args); ?> <!-- bucla etc.. --> <?php // Paginare $mare = 999999999; // nevoie de un număr întreg improbabil echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paginat') ), 'total' => $the_query->max_num_pages ) );
Concluzie
În această postare, am evidențiat diferitele tipuri de paginare WordPress și am partajat codul de paginare specific de utilizat pentru fiecare caz. Acest cod de paginare în WordPress poate fi adăugat la teme sau plugin-uri existente și poate fi adăugat la WordPress ca un plugin independent.