query_posts() – Aprenda a personalizar seu blog WordPress

Postado por: Pedro Rogério em

query_posts() é uma das funções chave do WordPress, onde com ela podemos fazer as seguintes modificações em nosso blog:

  • Só apareça um post ou uma página.
  • Mostrar todos os posts em um tempo determinado.
  • Mostrar somente os últimos posts na página principal.
  • Alterar a ordem dos posts.
  • Mostrar somente os posts de uma determinada categoria.
  • E várias outras coisas….

query_posts() é basicamente uma função para modificar a consulta a base de dados facilitando a tarefa, onde com base nos parâmetros passados, a função modifica a saída dos nossos posts. Essa função foi pensada para ser utilizada juntamente com o loop do WordPress, que se encarregará de mostrar o resultado da função query_posts() com as modificações que forem estipuladas.

Exemplo de Uso


<?php
query_posts('....');
while (have_posts()) : the_post();
...
endwhile;
?>

Parâmetros

query_posts() nos permite enviar uma série de parâmetros que podemos separar em vários tipos:

Parâmetros de Categorias

  • cat
  • category_name

Exemplo


query_posts('cat=4'); //Unicamente os posts da categoria com ID (4)
query_posts('cat=-4'); //Todos exceto os da categoría com ID (4)
query_posts('category_name=Categoria'); //Só os da categoria (Categoria)
query_posts('cat=1,2,4,5,7'); //Unicamente os posts das categorias indicadas.

Parâmetros de Tags

  • tag

Exemplo


query_posts('tag=cooking'); // Todos os posts com a tag (cooking)
query_posts('tag=bread,baking'); //Todos os posts que contenham (bread) ou (baking)
query_posts('tag=bread+baking+recipe'); //Todos los posts que contenham as 3 tags

Parâmetros de Autor

  • author_name
  • author

Exemplo


query_posts('author_name=Pedro'); //Todos os posts onde o Autor seja (Pedro)
query_posts('author=2'); //Todos os posts do autor (2)
query_posts('author=-4'); //Todos os posts menos do autor (4)

Parâmetros de posts e páginas

  • p
  • name
  • page_id
  • pagename
  • showposts

Exemplo


query_posts('p=1'); //Unicamente o post (1)
query_posts('name=first-post'); //Unicamente o post com nome (first-post)
query_posts('page_id=7'); //A página com ID (7)
query_posts('pagename=about'); //A página com nome (about)
query_posts('showposts=1'); //Modifica o LIMIT do SQL para indicar o número de posts a mostrar.

Parâmetros de tempo

  • hour
  • minute
  • second
  • day
  • monthnum
  • year

Exemplo


query_posts('hour=01'); //Todos os posts da seguinte hora: (1:00)
query_posts('minute=30'); //Todos os posts do minuto 30(*:30)
query_posts('second=07'); //Posts do segundo 7 (*:*07)
query_posts('day=1'); //Os posts dos días (1)
query_posts('monthnum=2'); //Os posts do mês (2)
query_posts('year=2005'); //Os posts do ano de (2005)

Parâmetros de Paginação

  • paged
  • posts_per_page
  • order

Exemplo


query_posts('paged=2'); //Todos os posts que se encontram na página (2) da paginação
query_posts('posts_per_page=10'); //Número de posts por página (10)
query_posts('order=ASC'); //Orden da paginação (ASC)

Combinando Parâmetros

Não teria muita graça se não pudessemos utilizar essas funcão com um só parâmetro, isso limitaria e muito seu potencial, mas para isso fazemos o uso de (&) para unir vários parâmetros:


query_posts("cat=-1,-2,-3&page_id=7&tag=bread,baking“);

Referências

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Gostou desse post?

Assine o nosso Feed RSS, siga-nos no Twitter, ou simplesmente nos recomende a seus amigos!

Sobre Pedro Rogério

Pedro Rogério é desenvolvedor web por paixão, não saberia fazer melhor outra coisa. Além de escrever para o Pinceladas da Web também escreve para o CSS no Lanche, blog voltado ao desenvolvimento front-end.

Central Server

13 Responses to “query_posts() – Aprenda a personalizar seu blog WordPress”

  1. Muito útil. Acaba de salvar minha vida. =)

    Excelente artigo, parabéns!

  2. Karlisson disse:

    Massa! Podemos personalizar as diferentes páginas do WordPress… eu me perguntava como fazer isso…
    Seu blog é muito útil, cara. Parabéns pelo trabalho =D

  3. Paulo disse:

    Olá Amigo blogueiro,

    Estou procurando na net. Algum esquema de fazer aparecer os últimos post do meu blog, na página inicial do meu portal.

    Vou explicar:
    http://www.oskaras.com/blog/

    Portal
    http://www.oskaras.com/index.php

    Gostaria que aparecesse tudo que aparece no centro do blog na pagina inicial, mais isso dentro da página inicial do meu portal. Estou a procura mais tá dificil….

    msn pj7000@gmail.com
    orkut http://www.orkut.com.br/Profile.aspx?uid=16288275905244235351

  4. Leonardo disse:

    Valeu mesmo !!! Me ajudou muito.

  5. nathan disse:

    Po, meu , excelente post.

  6. Poderia adicionar uma informação, e responder a minha duvida ao mesmo tempo,
    é possivel determinar a categoria a ser pesquisada, usando o $_GET ?
    Abraço

  7. Marlon disse:

    Não existe um parâmetro para eu pesquisar os “slugs” das categorias?

  8. Marlon disse:

    Respondendo a minha própria pergunta: category_name já faz pesquisa os “slugs” também. :)

  9. pmdci disse:

    O grande problema de query_posts() é que ele NÃO pode ser usado mais de uma vez no mesmo template.

    Se você quizer, por exemplo, usar query_posts() para mostrar só posts de uma categoria, e depois dentro deste MESMO template você adiciona uma condicional tipo is_home() por exemplo com o intuito de passar outras condicionais para query_posts() … ISSO NÃO FUNCIONA!

  10. Olá pessoal, existiria um modo, de eu usar a query para pegar subpaginas de uma determinada página? Assim como fazemos para pegar todos os posts de determinada categoria, queria fazer para pegar todas subpaginas de determinada pagina

    Abs

  11. Podia falar um puco desse parametro OFFSET?

    Valeu , muito bom o site !

Leave a Reply