Moderador
Mário Valney
(@mariovalney)
WordPress Cleric of Fire
Olá, tudo bem?
Se você já está na página de categoria, você não deve usar a WP_Query: o WordPress já te oferece o Loop padrão.
Tente ver como funciona a archive.php
ou a category.php
do seu tema, se existir.
Se o Loop padrão não te atender, você deve alterá-lo usando o filtro pre_get_posts.
Leia mais sobre o Loop aqui:
https://developer.wordpress.org/themes/basics/the-loop/
Nesse link você encontra também tudo o que precisa para aprender a desenvolver temas para o WordPress.
Abraços
Não estou na página de categoria, estou tentando fazer uma lista de posts em uma página chamada “page-musica.php”. Isso influencia o loop?
Moderador
Mário Valney
(@mariovalney)
WordPress Cleric of Fire
Opa. Nesse caso, você está certo: tem que usar WP_Query sim, pois o Loop padrão dessa página tem relação com a página que possui o slug “musica”.
Bem… Então temos que criar um loop secundário. Você fez certo.
Como seu problema é que nem todos os posts aparecem, talvez você queira colocar o parâmetro posts_per_page igual a -1
(isso faz ele retornar todos os posts).
Uma dica: talvez seja mais interessante criar um Template, assim você pode colocara em quaisquer páginas que achar necessário e não fica preso ao slug ‘musica’. Saiba como criar um template aqui.
Abraços
Mas essa página já faz parte do template page-musica.php, e infelizmente o parâmetro posts_per_page igual a -1 não funcionou. Pode existir algum outro fator (externo ou não externo) que influencie?
Moderador
Mário Valney
(@mariovalney)
WordPress Cleric of Fire
Você já está usando um Custom Template Page?
Se sim, sugiro outro nome, pois a página com o nome page-algumacoisa
é chamada quando a página de slug algumacoisa
é carregada.
Dá uma checada na hierarquia de templates:

Particularmente eu uso a notação template-algumacoisa.php
.
—–
Mas enfim, deixa isso pra lá hahah
Vamos para o seu problema.
O posts_per_page => -1
não funcionou?
Estranho, pois esses argumentos:
array(
'post_type' => 'albuns',
'category_name' => 'musica',
'posts_per_page' => -1,
)
Significam que você vai pegar todos (-1) os posts do tipo albuns e com a categoria musica.
Então a menos que algum plugin interfira nessa query, você deveria ver todos os posts publicados.
Responda-me por favor:
– Os posts que estão de fora estão nessa categoria mesmo?
– Os posts que estão de fora são do tipo album?
– Os posts que estão de fora estão publicados?
– Essa página está disponível em algum link?
Abraços
Mil desculpas caso eu tenha falado errado, é que eu estou bem no começo kkk
Acabei de analisar aqui e realmente estou criando páginas e arquivos page-$slug.php
.
Pata testar, apaguei todos os dados do navegador, criei uma página com o nome e slug teste
e criei um arquivo com o nome page-teste.php
, e coloquei apenas o loop:
<?php
$posts_slides = new WP_Query(array(
‘post_type’ => ‘albuns’,
‘category_name’ => ‘musica’,
‘post_per_page’ => -1
));
while($posts_slides->have_posts()) : $posts_slides->the_post();
?>
<li class=”list-group-item”>
<?php echo rwmb_meta(‘titulo-musica’); ?>
</li>
<?php endwhile; wp_reset_postdata(); ?>
Porém, o problema de não exibir todos os posts da categoria musica persiste.
(O único plugin que estou usando é o metabox, para criar campos personalizados)
-
Esta resposta foi modificada 6 anos, 8 meses atrás por
gabrielfz.
-
Esta resposta foi modificada 6 anos, 8 meses atrás por
gabrielfz.
– Os posts que estão de fora estão nessa categoria mesmo?
Sim!
– Os posts que estão de fora são do tipo album?
Não!
– Os posts que estão de fora estão publicados?
Sim!
– Essa página está disponível em algum link?
Não!
Moderador
Mário Valney
(@mariovalney)
WordPress Cleric of Fire
Opa. Então é isso:
– Os posts que estão de fora são do tipo album?
Não!
Você está usando post_type => 'albuns'
, então só irão retornar posts desse tipo. Se quiser receber mais de um tipo, tem que passar uma array:
post_type => [ 'albuns', 'outro_post_type' ]
Abraços
Olá, Mário!
Criei outro post_type com o nome musica-teste
e criei 25 posts (sendo cada post uma música) nesse post_type. Porém o erro persiste, pois quando coloco para aparecer todos os posts, só são mostrados apenas 10 (aparentemente o while
só roda 10 vezes), e acabei de perceber que opost_per_page
não interfere, pois fiz um teste colocando'post_per_page' => 3
e mesmo assim foram retornados 10 posts. 🙁
Segue o código:
<ul class="list-group list-group-flush">
<?php
$posts_slides = new WP_Query(array(
'post_type' => 'musica-teste',
‘category_name’ => ‘musica’,
'post_per_page' => 3,
));
while($posts_slides->have_posts()) : $posts_slides->the_post();
?>
<li class="list-group-item">
<?php echo rwmb_meta('titulo-musica'); ?>
</li>
<?php endwhile; wp_reset_postdata(); ?>
</ul>
-
Esta resposta foi modificada 6 anos, 7 meses atrás por
gabrielfz.
Moderador
Mário Valney
(@mariovalney)
WordPress Cleric of Fire
e acabei de perceber que o post_per_page
não interfere, pois fiz um teste colocando 'post_per_page' => 3
e mesmo assim foram retornados 10 posts.
Opa… então é aquilo que falamos no começo: algum plugin ou tema está interfirindo nessa query.
Sugiro desativar todos os plugins e ver se o problema persiste. Se persistir, coloque o tema padrão do WordPress e teste novamente. Se não persistir, então é um deles e aí você vai ativando um por um até o problema aparecer de novo.
Se não quiser fazer isso, pode procurar no código por alguém usando a ação pre_get_posts. É com ela que inserimos modificações nas queries.
Abraços
Consegui! 😀
O problema estava em Configurações de leitura
onde As páginas do blog mostram no máximo
estava marcado como apenas 10 posts.
Muito obrigado pela ajuda e pela paciência! Um forte abraço!
Moderador
Mário Valney
(@mariovalney)
WordPress Cleric of Fire
Essa configuração é das listagens padrão.
Se você está usando o parâmetro posts_per_page
corretamente, ele ignora esse valor.