Preciso ter uma quantidade diferente de postagens por página na primeira página e nas outras páginas.
Por exemplo, é disso que eu preciso
- Total de mensagens: 6
- Primeira página: mostrando 3 posts
- Página seguinte: mostrando 2 postagens por página
Aqui está o meu código:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$fp_limit = 3; // first page limit
$limit = 2; // following page limit
$offset = 0; // default offset
if( $paged == 1 ) {
$limit = $fp_limit;
} else {
$offset = $fp_limit + ( ($paged - 2) * $limit );
}
$args = array(
'post_type' => 'my_post_type',
'post_status' => 'publish',
'offset' => $offset,
'posts_per_page' => $limit,
'caller_ get_ posts' => -1, // remove sticky post
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'my_taxo',
'field' => 'slug',
'terms' => array('slug1', 'slug2', 'slug3')
)
)
);
$my_query = null;
$my_query = new WP_Query($args);
// basic loop
if( $my_query->have_posts() ) :
while ($my_query->have_posts()) : $my_query->the_post();
...
endwhile; endif; // archive loop
if (function_exists('wp_pagenavi')){ wp_pagenavi( array( 'query' => $my_query ) ); }
wp_reset_query();
Na primeira página do arquivo, esse código pressupõe:
Bem, 6 posts no total e 3 posts por página. Então, eu preciso de 2 páginas de arquivo e a paginação que apresento a você é:
[1] [2]
No entanto, qualquer outra página no arquivo que o código assume:
Bem, 6 posts no total e 2 posts por página. Então, eu preciso de 3 páginas de arquivo e a paginação que apresento a você é:
[1] [2] [3]
Precisa de uma ajudinha para consertar isso.
custom-post-types
loop
pagination
norixxx
fonte
fonte
'caller_ get_ posts'
contém espaços e não é válido. Segundo, está obsoleto. Use emignore_sticky_posts
vez disso.Respostas:
EDITAR - RESPOSTA REVISTA
Estou trabalhando em outra solução que é realmente melhor a resposta original. Isso não envolve nenhuma consulta personalizada e, para todos os fins, minha resposta original pode ser descartada, mas mantida para fins informativos.
Ainda acredito que você está na página inicial e também tratará isso como tal. Então esta é minha nova solução
PASSO 1
Remova a consulta personalizada da página inicial e substitua-a pelo loop padrão
PASSO 2
Use
pre_get_posts
para alterar a consulta principal e adicionar sua taxonomia personalizada à consulta principal a ser exibida na página inicial.ETAPA 3
Agora, pegue a
posts_per_page
opção definida no back-end (que eu assumo é 2) e também defina a suaoffset
que vamos usar. Será1
como você precisará de 3 postagens na página um e 2 no restantePASSO 4
Na página um, você precisará adicionar o
offset
aoposts_per_page
adicionará até 3 para obter suas três postagens na página um.PASSO 5
Você deve aplicá-lo
offset
a todas as páginas subseqüentes, caso contrário, você repetirá o último post da página na próxima páginaPASSO 6
Por fim, você precisa subtrair seu deslocamento de
found_posts
outra forma, sua paginação na última página estará incorreta e ocorrerá um404
erro, pois a última postagem estará ausente devido à contagem incorreta de postagensNOTA: Este trecho de código quebrou a paginação na página de pesquisa. Agora está corrigido, veja o código atualizado
TODOS JUNTOS
É assim que sua consulta completa se parecerá com a que deve entrar em functions.php
fonte
Eu sei que isso é de 1000 anos atrás, mas outra solução para quem procura essa solução enquanto usa uma consulta personalizada, aqui está como fazê-lo. Neste exemplo, a 1ª página precisava de 10 postagens e cada página subsequente, 9.
e, em seguida, na matriz, use este:
Agora você está pronto para ir.
fonte