5
respostas

Paginação de Custom Post Type

Bom dia, criei o tipo de postagem com o nome noticia, e o archive para ele: archive-noticia.php, até ai tudo beleza, funcionando bem, porém quando coloco a paginação e vou para alguma página que não seja a primeira, exemplo: http://localhost/noticias/page/2 o wp direciona para 404. O que pode estar acontecendo? Obrigado!

5 respostas

Segue o código do Custom Post Type

function post_type_ultimas_noticias() {

    $nome_singular = 'Notícia';
    $nome_plural   = 'Notícias';
    $descricao     = 'Últimas Notícias';

    $labels = array(
        'name'                  => $nome_plural,
        'name_singular'         => $nome_singular,
        'add_new_item'          => 'Adicionar nova '.$nome_singular,
        'edit_item'             => 'Editar '.$nome_singular,
        'view_item'             => 'Ver '.$nome_singular,
        'new_item'              => 'Nova '.$nome_singular,
        'view_items'            => 'Ver '.$nome_plural,
        'attributes'            => 'Atributos da '.$nome_singular,
        'search_items'          => 'Pesquisar '.$nome_plural,
        'not_found'             => 'Nenhuma '.$nome_singular.' encontrada.',
        'not_found_in_trash'    => 'Nenhuma '.$nome_singular.' encontrada na lixeira.',
        'add_new'               => 'Adicionar Nova',
        'name_admin_bar'        => $nome_plural,
        'featured_image'        => 'Imagem destacada',
        'set_featured_image'    => 'Definir imagem destacada',
        'remove_featured_image' => 'Remover imagem destacada',
        'use_featured_image'    => 'Usar como Imagem Destacada',
        'insert_into_item'      => 'Inserir na '.$nome_singular,
        'uploaded_to_this_item' => 'Anexadas a esta '.$nome_singular,
        'filter_items_list'     => 'Filtrar lista de '.$nome_plural,
        'items_list_navigation' => 'Navegação da lista de '.$nome_plural,
        'items_list'            => 'Lista de '.$nome_plural,
    );

    $supports = array(
        'title',
        'editor',
        'author',
        'thumbnail',
        'comments',
        'excerpt',
        'custom-fields',
        'revisions',
        'trackbacks',
        'post-formats',
    );

    $rewrite = array(
        'slug'       => 'noticias',
        'with_front' => true
    );

    $args = array(
        'labels'              => $labels,
        'description'         => $descricao,
        'public'              => true,
        'has_archive'         => true,
        'menu_icon'           => 'dashicons-format-aside',
        'rewrite'             => $rewrite,
        'capability_type'     => 'post',
        'publicly_queryable'  => true,
        'exclude_from_search' => false,
        'show_ui'             => true,
        'query_var'           => false,
        'supports'            => $supports,
    );

    register_post_type('noticia', $args);
    flush_rewrite_rules();
}

add_action('init', 'post_type_ultimas_noticias');

Oi Jhonata, tudo bem?

Posso ver o código onde vc chamou o loop?

Oq eu acho q pode ser é que esteja faltando alguns argumentos pra qndo vc for construir o objeto do loop.

$args = array(
...
    'paged'          => get_query_var('paged') ?                                                        
        get_query_var('paged') : 1,
    'posts_per_page' => 1,
    'post_type'      => 'noticia'
);

Algo mais ou menos nesse caminho (:

Abraço, espero sua resposta!

Estou com o mesmo problema, mas no meu caso eu tenho que apresentar um pagina com varias pessoas, e por serem muitos necessitava de uma paginação. Desde já agradeço.

Código do custom post-type:

function cadastrando_lideres(){
    $nomeSingular = 'Líder';
    $nomePlural   = 'Líderes';
    $description  = 'Líderes Seta';

    $labels = array(
        'name' => $nomePlural,
        'singular_name' => $nomeSingular,
        'add_new_item' =>'Adicionar novo '. $nomeSingular,
        'edit_item' => 'Editar ' . $nomeSingular
        );

    /*CRIA THUMBNAIL*/
    $supports = array (
        'title',
        'editor',
        'thumbnail'    
        );

    $args = array(
        'labels' => $labels,
        'description'=> $descricao,
        'public' => true,
        'menu_icon' => 'dashicons-awards',
        'supports' => $supports
        );


    register_post_type('lideres',$args);
}
add_action('init','cadastrando_lideres');

Código do loop:

?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

$query_args = array(
'post_type'      => 'lideres',
'posts_per_page' => 6,
'paged' => $paged
); 
?>


<?php $the_query = new WP_Query($query_args); ?>

<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

    <article class="col-xs-12 col-md-4">
        <div class="lideres-de-sucesso">   
           <?php if (has_post_thumbnail( $post->ID ) ): ?>
               <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>
               <img class="img-responsive parceiro" src="<?php echo $image[0]; ?>" alt="<?= the_title() ?>">
           <?php endif; ?>
           <div class="descricao">
            <img class="img-responsive medalha" src="<?= get_field('icone-medalha')?>" alt="medalha-hinode">
            <h3 class="font-montserrat-bold"><?= the_title() ?></h3>
            <p> <?= get_field('hier') ?></p>
            <a href="<?php the_permalink(); ?>" class="btn botao font-montserrat-bold">VEJA MAIS</a>
        </div>
    </div>
</article>

<?php endwhile; ?>
<?php wp_reset_postdata(); ?>

<?php if ($the_query->max_num_pages > 1) { // Verifique se o número máximo de páginas é maior do que 1  ?>
<nav class="controle-carrousel">
    <div class="btn botao font-montserrat">
        <?php echo get_next_posts_link( 'PRÓXIMO', $the_query->max_num_pages ); // Exibir link de posts mais antigo ?>
    </div>
    <div class="btn botao font-montserrat">
        <?php echo get_previous_posts_link( 'ANTERIOR' ); ?>
    </div>
</nav>
<?php } ?>

<?php else: ?>
    <article>
        <h1>Desculpe...</h1>
        <p><?php _e('Desculpe, nenhum post corresponde aos seus critérios.'); ?></p>
    </article>
<?php endif; ?>

Talvez este post ajude:

https://cursos.alura.com.br/forum/topico-paginando-os-im-oacute-veis-24499

Valeu Daniel, mas infelizmente eu não consegui aplicar a sua lógica na minha situação, será que você poderia me auxiliar, preciso entregar essa paginação até quinta-feira :/