Junior, não houve efeito porque, assim como você mesmo disse, o código do link que mandei era um exemplo, naquele link tem a documentação da action pre_get_posts
para você entender como ela funciona, tem alguns exemplos para facilitar sua vida, mas não é simplesmente copiar e colar o código que já estará funcionando.
Veja só, vamos ver se te ajudo, quando você acessa uma URL de um site WordPress o script monta uma query padrão, uma query padrão nada mais é do que instruções sobre o conteúdo que será exibido na página. Essa query padrão é montada com base nas configurações que você fez no painel administrativo, por exemplo, no seu caso está aparecendo 8 posts porque você deve ter configurado isso lá no painel administrativo do WordPress, ok?
Exemplificando… quando você acessa a página seusite.com.br/category/hospedagem
o WP monta uma query padrão, com base nas configurações do WP e na URL, então neste caso ele vai trazer 8 posts (por causa da configuração) da categoria hospedagem (por causa da URL) .
Espero que tenha entendido até aqui.
Onde a pre_get_posts
entra?
A action pre_get_posts
permite que você faça modificações na query padrão antes do WordPress buscar o conteúdo no banco para exibir na tela. Em outras palavras utilizando a action pre_get_posts
eu consigo dizer para o WordPress para trazer apenas 5 posts, ao invés de 8, quando a categoria acessada for a hospedagem, que é exatamente o que você precisa.
Porém é preciso mexer com cuidado neste filtro porque ele age na query padrão de todo o site, ou seja, você precisa garantir que as alterações que está fazendo só vão acontecer onde você deseja e no resto do site, inclusive no painel administrativo, tudo vai continuar seguindo o padrão.
Por exemplo, veja o código abaixo:
function hwl_home_pagesize( $query ) {
$query->set( 'posts_per_page', 5 );
return;
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );
Nele eu estou dizendo que o posts_per_page
deve ser igual a 5 em todas as querys padrões do WordPress, ou seja, quando você acessa a página administrativa que mostra os posts para editar o WP só irá trazer 5 posts, mas o que eu queria era mudar a quantidade apenas na home, não no painel admin, então o que eu faço???
function hwl_home_pagesize( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_home() ) {
$query->set( 'posts_per_page', 5 );
return;
}
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );
No primeiro bloco de código eu faço um if ( is_admin() || ! $query->is_main_query() ) return;
, traduzindo, se for o painel administrativo ou se não for a query principal do WordPress não faça nada, simplesmente apresente o resultado da forma que o WP montou.
No segundo bloco de código eu faço mais um if
e dessa vez estou dizendo Se estiver na home altere a quantidade de posts para 5 e retorne..
Espero que tenha entendido até aqui, se tiver dúvidas pergunte, mas não te darei o código pronto.
O que você precisa fazer é:
1 – Verificar se é o painel administrativo ou se não é a query padrão;
2 – Verificar se é a categoria hospedagem e caso sim alterar a quantidade de posts.
Nos exemplos que dei na minha explicação você tem tudo que precisa, é só tentar entender o conceito que saberá o que precisa alterar, se tiver dúvidas sobre qual função usar para algo é só falar.
Bom trabalho amigo e conte comigo.