Ajuda Wp_page navi
-
Meu pagenavi so aparece 2 paginas nao importa quantos posts tenha,
Exemplo se eu colocar 5 post por paginas, e tiver 15 pots, vai aparecer somente 2 paginas. meu codigo é esse:<?php $eventos = new WP_Query( array( 'post_type' => 'eventos', 'posts_per_page' => 4, 'paged' => get_query_var('paged'), 'meta_type' => 'datetime', 'meta_key' => 'dateevento', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); if ( have_posts() ) : while( $eventos->have_posts() ) : $eventos->the_post(); ?> <?php get_template_part('partials/content', 'eventos'); ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'noneevento'); ?> <?php endif; ?> <div class="clear"></div> <br> <div class="main-pagenavirb"><?php wp_pagenavi(); ?></div><br>
-
Olá @rtcadmin,
como você fez uma query a parte, acredito que para resolver o seu problema, você deve passar ela para dentro do pagenavi da seguinte forma:
wp_pagenavi( array( 'query' => $eventos ) );
Após fazer isso, é recomendado utilizar a seguinte função:
wp_reset_postdata();
para evitar problemas em outras queries no decorrer do seu código.
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
Mário Valney.
Olá @darthaud
Eu tentei fazer da forma que você disse, mas continua a mesma coisa, ele so gera 2 paginas, não mais que isso.. se tiver 20 post, e eu colocar 1 post por pagina, so é exibido 2 paginas..Agradeço pela ajuda! @darthaud
<?php $eventos = new WP_Query( array( 'post_type' => 'eventos', 'posts_per_page' => 3, 'paged' => get_query_var('paged'), 'meta_type' => 'datetime', 'meta_key' => 'dateevento', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); if ( have_posts() ) : while( $eventos->have_posts() ) : $eventos->the_post(); ?> <?php get_template_part('partials/content', 'eventos'); ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'noneevento'); ?> <?php endif; ?> <div class="clear"></div> <br> <div class="main-pagenavirb"><?php wp_pagenavi(array( query => $eventos )); ?> <?php wp_reset_postdata(); ?></div><br> </div>
Talvez possa ser algum erro no meu loop, porque o loop normal do blog ele funciona certo o pagenavi, agora com o loop do post type ele da esse erro,
esse é o cod do meu loop main
<?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?> <?php if ( ! get_post_format() ) : ?> <?php get_template_part('partials/content', 'default'); ?> <?php else: ?> <?php get_template_part('partials/content', get_post_format() ); ?> <?php endif; ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'none'); ?> <?php endif; ?> <!-- page-navigation --> <div class="clear"></div> <br> <div class="main-pagenavirb"> <?php wp_pagenavi(); ?> </div> </div> <br> <br><br> <!--ENDS page-navigation -->
Com o
wp_pagenavi( array( ‘query’ => $eventos ) );
ele apareceu todas as paginas, mas quando eu coloco na pagina 3, ele diz que nao tem post.Uma coisa do seu código original, que me parece errado, é que você no if have_posts está pegando da main query
if ( have_posts() )
e deveria estar pegando também da sua custom query não?.
$eventos->have_posts()
Mas não acho que seja isso que está afetando o seu loop e sua paginação.
O outro erro que você citou acima, esse sim, pode ser causado pelo if errado 🙂
@darthaud Arrumei o if aqui, mas ainda continua a mesma coisa, uma coisa que notei é que ate a segunda pagina, ele puxa pelo post type eventos, quando clico na terceira pagina ele puxa pelo index, o loop do eventos ta no arquivo archive-eventos, ai ate a segunda pagina ele puxa por ai, na terceira ele pega do index.
cod arrumado
<?php $eventos = new WP_Query( array( 'post_type' => 'eventos', 'posts_per_page' => 2, 'paged' => get_query_var('paged'), 'meta_type' => 'datetime', 'meta_key' => 'dateevento', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); if ( $eventos->have_posts() ) : while( $eventos->have_posts() ) : $eventos->the_post(); ?> <?php get_template_part('partials/content', 'eventos'); ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'noneevento'); ?> <?php endif; ?> <div class="clear"></div> <br> <div class="main-pagenavirb"><?php wp_pagenavi(array( query => $eventos )); ?> <?php wp_reset_postdata(); ?></div><br> </div>
Além dessa query que você postou, tem mais alguma na página em questão (archive-eventos)? Se tiver, essa outra se encontra antes ou depois dessa?
Então, esse loop aqui é o primeiro
Se for noticia normal ele puxa por esse loop com o content-default que so tem o titulo da noticia, enfim nao tem outro loop nem query.<?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?> <?php if ( ! get_post_format() ) : ?> <?php get_template_part('partials/content', 'default'); ?> <?php else: ?> <?php get_template_part('partials/content', get_post_format() ); ?> <?php endif; ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'none'); ?> <?php endif; ?> <!-- page-navigation --> <div class="clear"></div> <br> <div class="main-pagenavirb"> <?php wp_pagenavi(); ?> </div> </div> <br> <br><br> <!--ENDS page-navigation -->
Depois desse que ele vai pro post type, se for evento ele vai pra essa query
esse é o meu arquivo archive-eventos.php
<?php get_header(); ?> <div class="top-comp"> <div class="titulo-pagina">PROXIMOS EVENTOS</div> </div> <div class="main-all-pages"> <?php $eventos = new WP_Query( array( 'post_type' => 'eventos', 'posts_per_page' => 2, 'paged' => get_query_var('paged'), 'meta_type' => 'datetime', 'meta_key' => 'dateevento', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); if ( $eventos->have_posts() ) : while( $eventos->have_posts() ) : $eventos->the_post(); ?> <?php get_template_part('partials/content', 'eventos'); ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'noneevento'); ?> <?php endif; ?> <div class="clear"></div> <br> <div class="main-pagenavirb"><?php wp_pagenavi(array( query => $eventos )); ?> <?php wp_reset_postdata(); ?></div><br> </div> <div class="clear"> </div> <br><br><br> <?php get_footer(); ?>
Pra ficar mais claro.
index.php
<?php get_header(); ?> <div class="top-comp"> <div class="titulo-pagina">ÚLTIMAS NOTÍCIAS</div> </div> <div class="container-noticia"> <?php get_template_part('partials/loop', 'main'); ?> <div class="clear"></div> </div> </div> <?php get_footer(); ?>
loop-main.php
<?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?> <?php if ( ! get_post_format() ) : ?> <?php get_template_part('partials/content', 'default'); ?> <?php else: ?> <?php get_template_part('partials/content', get_post_format() ); ?> <?php endif; ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'none'); ?> <?php endif; ?> <!-- page-navigation --> <div class="clear"></div> <br> <div class="main-pagenavirb"> <?php wp_pagenavi(); ?> </div> </div> <br> <br><br> <!--ENDS page-navigation -->
archive-eventos.php
<?php get_header(); ?> <div class="top-comp"> <div class="titulo-pagina">PROXIMOS EVENTOS</div> </div> <div class="main-all-pages"> <?php $eventos = new WP_Query( array( 'post_type' => 'eventos', 'posts_per_page' => 2, 'paged' => get_query_var('paged'), 'meta_type' => 'datetime', 'meta_key' => 'dateevento', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); if ( $eventos->have_posts() ) : while( $eventos->have_posts() ) : $eventos->the_post(); ?> <?php get_template_part('partials/content', 'eventos'); ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'noneevento'); ?> <?php endif; ?> <div class="clear"></div> <br> <div class="main-pagenavirb"><?php wp_pagenavi(array( query => $eventos )); ?> <?php wp_reset_postdata(); ?></div><br> </div> <div class="clear"> </div> <br><br><br> <?php get_footer(); ?>
loop-pages.php
<?php if ( have_posts() ) : the_post(); ?> <div class="top-comp"><div class="titulo-pagina"><?php the_title(''); ?></div></div> <?php endif; ?> <?php if ( is_single() ) : ?> <?php get_template_part('partials/content', 'default'); ?> <?php else: ?> <div class="main-all-pages"> <?php the_content(); ?> </div> <div class="clear"></div> <?php endif; ?>
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
RTCADMIN.
Olá @rtcadmin, tudo bem?
Nas páginas de arquivo dos Custom Post Type (archive-*.php, caso tenha criado o template dela) não precisa criar uma query com WP_Query pois a própria Query Principal já sabe que é um arquivo daquele custom post type.
Tenta deixar o seu archive com o mesmo loop dos posts nativos que vai funcionar.
Abraços
Olá @mariovalney,
Da forma que voce falou ele funciona normal com o paginavi mesmo, só tem um problema,
eu preciso que os post sejam exibidos na ordem DESC pela'meta_key' => 'dateevento',
E eu nao sei como fazer isso no outro loop sem usar a Wp_Query.<?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?> <?php if ( ! get_post_format() ) : ?> <?php get_template_part('partials/content', 'default'); ?> <?php else: ?> <?php get_template_part('partials/content', get_post_format() ); ?> <?php endif; ?> <?php endwhile; ?> <?php else: ?> <?php get_template_part('partials/content', 'none'); ?> <?php endif; ?>
Muito obrigado pela ajuda!
Utilize o filtro pre_get_posts para alterar a Query.
Vai ler no link que te passei, mas aproveito pra alertar: verifique no filtro se está na query principal (main query) e se está na página de arquivo desse custom post type. Dessa forma não vai alterar outras queries.
Obrigado @mariovalney!
Funcionou certinho!function modifica_query_eventos ( $query ) { if( $query->query_vars['post_type'] === 'eventos' && !is_admin() ) { $query->set('orderby', 'meta_value'); $query->set('meta_key','dateevento'); $query->set('order', 'desc'); $query->set( 'posts_per_page' ,'4'); } } add_action( 'pre_get_posts', 'modifica_query_eventos' );
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
- O tópico ‘Ajuda Wp_page navi’ está fechado para novas respostas.