Skip to content

Instantly share code, notes, and snippets.

@allysonsouza
Last active August 29, 2015 14:03
Show Gist options
  • Save allysonsouza/61c48cea9db17ed9d12a to your computer and use it in GitHub Desktop.
Save allysonsouza/61c48cea9db17ed9d12a to your computer and use it in GitHub Desktop.
Page Template as Archive for CPT
<?php
/* Este é o conteúdo de uma template page a ser exibido por uma página com slug = 'portfolio', tal como o post_type
A criação do CPT está com o argumento 'has_archive' => false, e a template page funciona normalmente, exceto quando é necessário
exibir uma página que não seja a primeira: www.meusite.com.br/portfolio/page/2 etc.
*/
//Pagination
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
//Portfolio
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 9,
'paged' => $paged
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
//Exibição do conteúdo
}
}
//Abaixo os dois métodos testados de fazer a paginação, com resultados iguais ( a função do odin é basicamente um container para a paginate_links() com verificações e tratamentos adicionais)
//Método 1: Paginação do Odin Framework
odin_pagination( 2, 1, false, $query );
//Método 2: paginate_links() direto
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $query->max_num_pages,
'prev_next' => false
) );
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment