TransWikia.com

wp_pagenavi não funciona em category.php

Stack Overflow em Português Asked by Juliano Araújo on December 30, 2021

Baixei e instalei o Plugin wp_pagenavi eu coloquei no fim do meu código, ele aparece só que não pagina, clicando, seja no 2… 3… ele não pagina, sempre repete os itens de 1 a 10.

Código

<?php get_header(); ?>
    <div class="contentCenter">
        <div class="internalContent">
            <h1> <?php echo "Categoria "; single_cat_title(''); ?> </h1>
            <?php query_posts($query_strings . "&order=ASC"); ?>

            <?php if(have_posts()) : while(have_posts()) : the_post(); ?>
                <div class="postList">
                    <div class="postListImage">
                        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
                            <?php the_post_thumbnail(array(198, 198)); ?>
                        </a>
                    </div>
                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <p style="font-size:12px; margin-top:4px;">
                        <i>Publicado por <strong><?php the_author(); ?></strong> em <strong> <?php the_time('d/m/Y'); ?></strong></i>
                    </p>
                    <?php the_excerpt(); ?>
                    <a href="<?php the_permalink(); ?>" id="read_more_link">
                        Continuar Lendo >>
                    </a>
                    <div class="visualClear"></div>
                </div>
            <?php
                endwhile;
                else:
            ?>
                <p class="no-posts-found">Nenhum post encontrado.</p>
            <?php
                endif;
            ?>
        <?php wp_pagenavi(); ?>
        </div>
    </div>
<?php get_footer(); ?>

O que eu poderia fazer pra ele funcionar?

Obs.: Sou novato no WordPress.

2 Answers

wp_pagenavi está falhando porque a sua query está sendo sobrescrita com query_posts(). A internet vai te dizer o contrário, mas nunca é uma boa ideia usar query_posts() porque essa função bagunça todas as variáveis globais do tema e causa esses tipos de problemas.

O plugin está implementado corretamente mas ao invés de chamar query_posts na linha 5 as alterações na consulta devem ser feitas no seu arquivo functions.php usando o filtro pre_get_posts.

Exemplo:

add_action('pre_get_posts', 'modifica_query_category');
function modifica_query_category( $query ) {
    // modifica apenas a query principal de arquivos de categoria
    if ( $query->is_main_query() && is_category() ) {
        // altera a ordem para ascendente
        $query->set('order', 'ASC');
    } 
}

Com isso você elimina a consulta duplicada, melhora a performance do site e corrige os erros de paginação de uma vez só :)

Answered by Ricardo Moraleida on December 30, 2021

Veja se isso define o limite que você quer na linha 5:

<?php
 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
 $args = array('posts_per_page' => '8'); 
 query_posts($args . $query_strings . '&order=ASC&paged=' . $paged);
?>

Answered by Ivan Ferrer on December 30, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP