5 extraits de code de pagination WordPress avec exemples [simple à avancé]

Publié: 2020-02-03

code de pagination dans les exemples WordPress Si vous recherchez le meilleur code de pagination dans WordPress avec des exemples spécifiques, vous trouverez les exemples d'extraits de code de pagination partagés dans cet article très utiles. Vous pouvez appliquer ce code de pagination dans le thème WordPress ou dans un plugin WordPress personnalisé qui nécessite la pagination des articles. Permettez-moi de couper la chasse et de partager mes extraits de code de pagination préférés :

#1) Boucle WordPress avec code de pagination simple

Si vous souhaitez ajouter une pagination dans la boucle WordPress, vous pouvez utiliser le code de pagination suivant et précédent ci-dessous :

 <?php si ( have_posts() ) : ?>

<!-- Ajoutez les fonctions de pagination ici. -->

<!-- Début de la boucle principale. -->
<?php while ( have_posts() ) : the_post(); ?>

<!-- le reste de la boucle principale de votre thème -->

<?php pendant que ; ?>
<!-- Fin de la boucle principale -->

<!-- Ajoutez les fonctions de pagination ici. -->

<div class="nav-previous alignleft"><?php previous_posts_link( 'Messages plus anciens' ); ?></div>
<div class="nav-next alignright"><?php next_posts_link( 'Messages plus récents' ); ?></div>

<?php sinon : ?>
<p><?php _e('Désolé, aucun article ne correspond à vos critères.'); ?></p>
<?php endif; ?>

#2) Pagination numérique WordPress

Une autre excellente option de pagination WordPress consiste à utiliser la pagination numérique qui ajoute des numéros aux publications et regroupe les publications en fonction d'un nombre. Par exemple, vous pouvez afficher 5 messages sur une page. Voici le code de pagination dans WordPress pour la pagination numérique :

 <?php 

#ETAPE 1 : Créer la fonction de pagination numérique de WordPress 

function njengah_numeric_pagination() {
 
    si( est_singulier() )
        retourner;
 
    globale $wp_query ;
 
    /** Arrête l'exécution s'il n'y a qu'une seule page */
    if( $wp_query->max_num_pages <= 1 )
        retourner;
 
    $paginé = get_query_var( 'paginé' ) ? absint( get_query_var( 'paginé' ) ) : 1;
    $max = intval( $wp_query->max_num_pages );
 
    /** Ajoute la page actuelle au tableau */
    si ( $paginé >= 1 )
        $links[] = $paginé ;
 
    /** Ajoute les pages autour de la page courante au tableau */
    si ( $paginé >= 3 ) {
        $links[] = $paginé - 1 ;
        $links[] = $paginé - 2 ;
    }
 
    si ( ( $paginé + 2 ) <= $max ) {
        $links[] = $paginé + 2 ;
        $links[] = $paginé + 1 ;
    }
 
    echo '<div class="navigation"><ul>' . "\n" ;
 
    /** Lien du post précédent */
    si (get_previous_posts_link())
        printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
 
    /** Lien vers la première page, plus points de suspension si nécessaire */
    if ( ! in_array( 1, $links ) ) {
        $class = 1 == $paginé ? ' class="actif"' : '';
 
        printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
 
        if ( ! in_array( 2, $links ) )
            echo '<li>…</li>' ;
    }
 
    /** Lien vers la page actuelle, plus 2 pages dans les deux sens si nécessaire */
    trier( $liens );
    foreach ( (tableau) $links as $link ) {
        $classe = $paged == $lien ? ' class="actif"' : '';
        printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
    }
 
    /** Lien vers la dernière page, plus points de suspension si nécessaire */
    if ( ! in_array( $max, $links ) ) {
        if ( ! in_array( $max - 1, $links ) )
            echo '<li>…</li>' . "\n" ;
 
        $classe = $paged == $max ? ' class="actif"' : '';
        printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
    }
 
    /** Lien vers l'article suivant */
    si (get_next_posts_link())
        printf( '<li>%s</li>' . "\n", get_next_posts_link() );
 
    echo '</ul></div>' . "\n" ;
 
}

#ÉTAPE 2 : Ajoutez aux modèles en utilisant cet appel à la fonction ci-dessus 

njengah_numeric_pagination();

#ÉTAPE 3 : Stylez la pagination de manière appropriée pour l'adapter à vos styles de thème 

/** Classes CSS pour styliser la pagination*/ 

.navigation li {
    
}
.navigation li a{
	
	
}

#3) Exemple de pagination WordPress Ajax

Si vous cherchez le code de pagination Ajax dans WordPress, j'ai trouvé un exemple sur GitHub qui fonctionne très bien et le code se présente sous la forme d'un plugin. Je l'ai personnalisé pour en faire un plugin pour notre tutoriel et le code peut être copié dans un fichier et enregistré au format zip et installé en tant que plugin. Voici l'exemple de code de pagination WordPress Ajax :

 <?php
/**
 * Nom du plugin : Njengah Ajax Pagination
 * URI du plugin : https://njengah.com 
 * Description : Exemple de pagination WordPress Ajax.
 *Version : 1.0.0
 * Auteur : Joe Njenga
 * URI de l'auteur : https://njengah.com 
 * Licence : GPL-2.0+
 * URI de la licence : http://www.gnu.org/licenses/gpl-2.0.txt
 * Domaine de texte : cs-pagination
 * Chemin du domaine : /languages
 */

// Crédit - Casper Schultz 

classe Njengah_Ajax_Pagination {

	protégé $num_per_page ;

	fonction publique __construct() {
		$this->num_per_page = 5 ;
		$this->init();
	}

	fonction protégée 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' ) );
	}

	/**
	 * Analysez la demande entrante et générez le résultat.
	 */
	function 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;

			$args = tableau(
				'post_type' => 'post',
				'post_per_page' => $this->num_per_page,
				'paginé' => $page,
			);

			$query = new WP_Query( $args );

			// Nous avons besoin de connaître le nombre total de messages trouvés.
			$values['total'] = $query->found_posts ;

			// Et le par page.
			$values['per_page'] = $this->num_per_page ;

			$values['messages'] = tableau();

			// Envoyons uniquement les données dont nous avons besoin.
			tandis que ( $query->have_posts() ) {

				$query->the_post();

				$values['messages'][] = tableau(
					'ID' => get_the_ID(),
					'titre' => get_the_title(),
				);
			}

			wp_reset_postdata();
			wp_send_json( $values ​​);
		}
	}

	/**
	 * Ajoutez les arguments de requête nécessaires.
	 */
	fonction add_query_vars( $query_vars ) {
		$query_vars[] = 'cs-page';

		retourne $query_vars ;
	}

	/**
	 * Ajoute une règle de réécriture pour notre pagination personnalisée afin que nous puissions éviter d'utiliser admin-ajax.
	 */
	fonction add_rewrite_rule() {
		add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', 'top' );
	}

	/**
	 * Flush règles de réécriture.
	 */
	fonction statique install() {
		flush_rewrite_rules();
	}
}


fonction njengah_ajax_pagination_init() {
	nouveau Njengah_Ajax_Pagination();
}

njengah_ajax_pagination_init();

// Nécessité de vider les règles de réécriture lors de l'activation.
register_activation_hook( __FILE__, array( 'Njengah_Ajax_Pagination', 'install' ) );

#4) Pagination WordPress pour le type de publication personnalisé

Pour la pagination de type de publication personnalisée, vous devez utiliser WP_query pour vérifier le type de publication personnalisé et dans les arguments, vous transmettez le type de publication personnalisé dans le post_type, puis utilisez le code de pagination pour créer la pagination WordPress pour le type de publication personnalisé.

Voici le code que vous devez ajouter au functions.php et remplacer le post_type par votre slug de type de publication personnalisé respectif :

 <?php 

/**
 * Pagination WordPress pour les types de publication personnalisés  
 */ 
 
 <?php

 $paginé = ( get_query_var( 'paginé' ) ) ? get_query_var( 'paginé' ) : 1;

	$args = tableau(
		 'post_type' => 'custom_post_type_name',
		 'messages_par_page' => 10,
		 'paginé' => $paginé
	);

	$loop = new WP_Query( $args );

	while ( $loop->have_posts() ) : $loop->the_post();
 
 // Contenu de type de publication personnalisé 
 
pendant ce temps;
?>
<nav class="pagination">
     <?php
     $gros = 999999999 ;
     echo paginate_links( tableau(
          'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
          'format' => '?paged=%#%',
          'current' => max( 1, get_query_var('paginé') ),
          'total' => $boucle->max_num_pages,
          'prev_text' => '&laquo;',
          'next_text' => '&raquo;'
     ) );
?>
</nav>
<?php wp_reset_postdata(); ?>

#5 Pagination personnalisée des requêtes WordPress

Le code de pagination de requête personnalisé dans WordPress utilise WP_query pour obtenir la publication spécifique que nous voulons paginer, puis combine les résultats de la requête avec le code de pagination pour appliquer la pagination aux publications spécifiques que nous avons sélectionnées. Voici un exemple de pagination de requête personnalisée dans WordPress.

 <?php

//Requête personnalisée 

$paginé = ( get_query_var( 'paginé' ) ) ? absint( get_query_var( 'paginé' ) ) : 1;
 
$args = tableau(
    'messages_par_page' => 5,
    'category_name' => 'galerie',
    'paginé' => $paginé,
);
 
$the_query = new WP_Query( $args );
?>
<!-- la boucle etc. -->

<?php

// Mise en page 
$gros = 999999999 ; // besoin d'un entier improbable
 
echo paginate_links( tableau(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paginé') ),
    'total' => $the_query->max_num_pages
) );

Conclusion

Dans cet article, nous avons mis en évidence les différents types de pagination WordPress et partagé le code de pagination spécifique à utiliser pour chaque cas. Ce code de pagination dans WordPress peut être ajouté à des thèmes ou plugins existants et peut également être ajouté à WordPress en tant que plugin autonome.