Suporte » Desenvolvendo com WordPress » Paginação em custom loop

  • Resolvido mbullet

    (@mbullet)


    Olá pessoal

    O que fiz foi o seguinte: criei um custom loop no Single-post, que listasse os posts de uma categoria disponibilizada por um custom field. O problema é que a paginação não funciona de jeito nenhum, sempre retornando para a primeira página. Estou há alguns dias rodando o Google – parece ser um problema bem comum – e tentando diversos códigos, mas sem sucesso.

    Alguém pode me ajudar? Vou colocar aqui o que já fiz e não funcionou:

    <?php $my_query = new WP_Query(array( 'cat' => get_post_meta($post->ID, 'epicat', true), ‘orderby’ => ‘menu_order’, 'caller_get_posts'            =>1, ‘paged’ => $paged, 'posts_per_page' => 8, )); if ($my_query->have_posts()): ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

    Tentativa 2, sem retirar informação do custom field.

    <?php $paged = get_query_var( 'page' ) ? get_query_var( 'page' ) : 1; $args = array( 'posts_per_page' => 8, 'paged' => $paged, 'cat' => 128 ); $loop = new WP_Query($args); while ($loop->have_posts()) : $loop->the_post(); ?>

    Tentativa 3:

    <?php
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query();
    $wp_query->query('showposts=5'.'&paged='.$paged); ?>
    
    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

    Tentativa 4:

    <?php
      global $paged;
      $this_page = $_GET['page'];
      $paged = $this_page;
      $my_query = new WP_Query(array( 'cat' => get_post_meta($post->ID, 'epicat', true), 'posts_per_page' => 8, )); if ($my_query->have_posts()): ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

    PS: Estou utilizando a paginação do Kriesi, mas o problema não parece ser ali, já que o resultado é o mesmo com next_posts_link() e previous_posts_link().

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • Tente usar paged e não page

    $paged = get_query_var( ‘paged’ ) ? get_query_var( ‘paged’ )

    Criador do tópico mbullet

    (@mbullet)

    Obrigado pela resposta.

    Já tentei a mudança por paged, mas não parece fazer diferença.

    Tente fazer assim

    <?php
    $args = array(
        'post_type' => 'post'
        'cat' => 128,
        'paged' => (get_query_var('paged')),
        'posts_per_page' => 8
    );
    query_posts($args);
    while ( have_posts() ): the_post(); ?>
    Criador do tópico mbullet

    (@mbullet)

    Coloquei os permalinks no default, e agora está funcionando. Código que estou usando:

    <?php $args = array(
        'cat' => '128',
        'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
        'posts_per_page' => 10,
    );
    $loop = new WP_Query;
    $loop->query( $args ); ?>

    Alguma ideia de como fazer pra funcionar apenas com %postname%?
    Aliás, pelo que pude notar, a estrutura da URL tambem fica diferente com os permalinks padrões: ?p=4141&paged=2 enquanto no pretty permalinks: nomedopost/page/2
    Imagino que tenha a ver com aquilo de “page” e “paged”…

    Na verdade o loop que está funcionando pra vc está errado, etranho é como está funcionando.

    na parte

    $loop = new WP_Query; 
    
    deveria ser
    
    $loop = new WP_Query( $args );

    ou então
    query_posts( $args );

    Talvez por essas mudanças não esteja funcionando com os links amigáveis, sei lá.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Paginação em custom loop’ está fechado para novas respostas.