5 trechos de código de paginação do WordPress com exemplos [simples a avançado]
Publicados: 2020-02-03Se você está procurando o melhor código de paginação no WordPress com exemplos específicos, verá que os exemplos de trechos de código de paginação compartilhados neste post são muito úteis. Você pode aplicar este código de paginação no tema WordPress ou em um plugin WordPress personalizado que requer paginação de posts. Deixe-me cortar o assunto e compartilhar meus trechos de código de paginação favoritos:
#1) Loop do WordPress com código de paginação simples
Se você deseja adicionar paginação dentro do loop do WordPress, você pode usar o código de paginação seguinte e anterior abaixo:
<?php if ( have_posts() ): ?> <!-- Adicione as funções de paginação aqui. --> <!-- Início do loop principal. --> <?php while ( have_posts() ): the_post(); ?> <!-- o resto do loop principal do seu tema --> <?php endwhile; ?> <!-- Fim do loop principal --> <!-- Adicione as funções de paginação aqui. --> <div class="nav-previous alignleft"><?php previous_posts_link( 'Mensagens mais antigas' ); ?></div> <div class="nav-next alignright"><?php next_posts_link( 'Mensagens mais recentes' ); ?></div> <?php mais: ?> <p><?php _e('Desculpe, nenhuma postagem correspondeu aos seus critérios.'); ?></p> <?php endif; ?>
#2) Paginação Numérica do WordPress
Outra ótima opção de paginação do WordPress é usar a paginação numérica que adiciona números às postagens e agrupa as postagens com base em um número. Por exemplo, você pode exibir 5 postagens em uma página. Este é o código de paginação no WordPress para paginação numérica :
<?php #ETAPA 1: Crie a função numérica de paginação do WordPress function njengah_numeric_pagination() { if( is_singular() ) Retorna; global $wp_query; /** Parar a execução se houver apenas 1 página */ if( $wp_query->max_num_pages <= 1 ) Retorna; $paged = get_query_var('paged') ? absint( get_query_var( 'paged' ) ): 1; $max = intval( $wp_query->max_num_pages); /** Adiciona a página atual ao array */ if ( $ paginado >= 1 ) $links[] = $page; /** Adiciona as páginas ao redor da página atual ao array */ if ( $ paginado >= 3 ) { $links[] = $paged - 1; $links[] = $paged - 2; } if ( ( $ paginado + 2 ) <= $ max ) { $links[] = $paginado + 2; $links[] = $paginado + 1; } echo '<div class="navigation"><ul>' . "\n"; /** Link da postagem anterior */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /** Link para a primeira página, mais reticências se necessário */ if (! in_array(1, $links)) { $class = 1 == $paged ? ' class="ativo"' : ''; 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>'; } /** Link para a página atual, mais 2 páginas em qualquer direção, se necessário */ sort($links); foreach ( (array) $links como $link) { $classe = $paginado == $link ? ' class="ativo"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Link para a última página, mais reticências se necessário */ if (! in_array( $max, $links)) { if (! in_array( $max - 1, $links)) echo '<li>…</li>' . "\n"; $classe = $ paginado == $max ? ' class="ativo"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Link da próxima postagem */ if ( get_next_posts_link() ) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); echo '</ul></div>' . "\n"; } #ETAPA 2: Adicione aos modelos usando esta chamada para a função acima njengah_numeric_pagination(); #ETAPA 3: Estilize a paginação adequadamente para se adequar aos seus estilos de tema /** Classes CSS para Estilizar a Paginação*/ .navigation li { } .navigation li a{ }
#3) Exemplo de paginação WordPress Ajax
Se você está procurando o código de paginação Ajax no WordPress, encontrei um exemplo no GitHub que está funcionando muito bem e o código está na forma de um plugin. Eu o personalizei para torná-lo um plugin para nosso tutorial e o código pode ser copiado para um arquivo e salvo em formato zip e instalado como um plugin. A seguir está o código de exemplo de paginação do WordPress Ajax:
<?php /** * Nome do Plugin: Paginação Njengah Ajax * URI do plug-in: https://njengah.com * Descrição: Exemplo de paginação do WordPress Ajax. * Versão: 1.0.0 * Autor: Joe Njenga * URI do autor: https://njengah.com * Licença: GPL-2.0+ * URI de licença: http://www.gnu.org/licenses/gpl-2.0.txt * Domínio de texto: paginação cs * Caminho do domínio: /languages */ // Crédito - Casper Schultz class Njengah_Ajax_Pagination { protegido $num_per_page; função pública __construct() { $this->num_per_page = 5; $this->init(); } função protegida 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')); } /** * Analise a solicitação recebida e gere o resultado. */ 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 = array( 'post_type' => 'post', 'post_per_page' => $this->num_per_page, 'paged' => $página, ); $consulta = new WP_Query( $args); // Precisamos saber o número total de posts encontrados. $values['total'] = $query->found_posts; // E por página. $values['per_page'] = $this->num_per_page; $valores['posts'] = array(); // Vamos enviar apenas os dados que precisamos. while ( $query->have_posts() ) { $consulta->the_post(); $valores['posts'][] = array( 'ID' => get_the_ID(), 'título' => get_the_title(), ); } wp_reset_postdata(); wp_send_json($valores); } } /** * Adicione os argumentos de consulta necessários. */ function add_query_vars( $query_vars) { $query_vars[] = 'cs-page'; return $query_vars; } /** * Adiciona uma regra de reescrita para nossa paginação personalizada para que possamos evitar o uso de admin-ajax. */ function add_rewrite_rule() { add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', 'top' ); } /** * Flush regras de reescrita. */ função estática instalar() { flush_rewrite_rules(); } } function njengah_ajax_pagination_init() { new Njengah_Ajax_Pagination(); } njengah_ajax_pagination_init(); // Necessidade de liberar as regras de reescrita na ativação. register_activation_hook( __FILE__, array( 'Njengah_Ajax_Pagination', 'install' ) );
#4) Paginação WordPress para tipo de postagem personalizada
Para paginação de tipo de postagem personalizada, você precisa usar o WP_query para verificar o tipo de postagem personalizada e nos argumentos, você passa o tipo de postagem personalizada no post_type e depois usa o código de paginação para criar a paginação do WordPress para o tipo de postagem personalizada.
A seguir está o código que você deve adicionar ao functions.php e substituir o post_type pelo seu respectivo slug de tipo de postagem personalizado:
<?php /** * Paginação WordPress para tipos de postagem personalizados */ <?php $paged = (get_query_var('paged')) ? get_query_var('paginado'): 1; $args = array( 'post_type' => 'custom_post_type_name', 'posts_per_page' => 10, 'paginado' => $ paginado ); $loop = new WP_Query( $args); while ( $loop->have_posts()): $loop->the_post(); // Conteúdo do tipo de postagem personalizado fim; ?> <nav class="paginação"> <?php $grande = 999999999; echo paginate_links( array( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), 'formato' => '?paged=%#%', 'atual' => max( 1, get_query_var('paged') ), 'total' => $loop->max_num_pages, 'prev_text' => '«', 'next_text' => '»' )); ?> </nav> <?php wp_reset_postdata(); ?>
#5 Paginação de consulta personalizada WordPress
O código de paginação de consulta personalizada no WordPress utiliza o WP_query para obter a postagem específica que desejamos paginar e, em seguida, combina os resultados da consulta com o código de paginação para aplicar a paginação às postagens específicas que selecionamos. Veja a seguir um exemplo de paginação de consulta personalizada no WordPress.
<?php //Consulta personalizada $paged = (get_query_var('paged')) ? absint( get_query_var( 'paged' ) ): 1; $args = array( 'posts_per_page' => 5, 'category_name' => 'galeria', 'paginado' => $ paginado, ); $the_query = new WP_Query( $args ); ?> <!-- o loop etc. --> <?php // Paginação $grande = 999999999; // precisa de um inteiro improvável echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'formato' => '?paged=%#%', 'atual' => max( 1, get_query_var('paged') ), 'total' => $the_query->max_num_pages ));
Conclusão
Neste post, destacamos os diferentes tipos de paginação do WordPress e compartilhamos o código de paginação específico para usar em cada caso. Este código de paginação no WordPress pode ser adicionado a temas ou plugins existentes e também pode ser adicionado ao WordPress como um plugin autônomo.