O Que é a Função get_posts do WordPress e Como Usá-la Para Criar Listas de Posts em PHP
Com a função get_posts do WordPress, você consegue recuperar posts, páginas e tipos de posts personalizados com base nos parâmetros fornecidos. Ela filtra os posts de acordo com critérios estabelecidos como data, autor, tipo, permissão ou meta key.
Você pode usar essa função para mostrar conteúdos relevantes aos seus usuários rapidamente. Por exemplo, é possível exibir listas de posts mais comentados, do mesmo autor, ou de uma mesma categoria.
Neste artigo, vamos explicar a função get_posts do WordPress, seus parâmetros e objetos. Você também aprenderá como usar essa função para criar consultas personalizadas para diversas tarefas.
Conteúdo
O Que é a Função get_posts do WordPress?
A função get_posts do WordPress é um recurso que te deixa consultar posts com base em determinados parâmetros, como a data de publicação, autor, tipo, permissão ou meta key.
Os desenvolvedores do WordPress usam essa função para encontrar mais rapidamente publicações que correspondem aos critérios fornecidos. Por exemplo, eles podem exibir listas de posts mais visualizados, da mesma data de publicação, ou de uma mesma categoria.
Como o get_posts do WordPress Funciona?
A função get_posts transforma o código PHP em consultas SQL para buscar dados de posts do seu banco de dados. Essas consultas são baseadas nos parâmetros que você forneceu — os critérios para filtrar os posts.
Para construir as consultas SQL, essa função do WordPress usa a classe WP_query . Após processar as consultas, o banco de dados retornará um array de resultados WP_post , cada um representando um objeto de post individual.
Importante! Nesse caso, posts aqui se referem a publicações, páginas e tipos de posts personalizados do WordPress.
O WP_query também pode puxar o conteúdo do post do banco de dados WordPress e exibi-lo no navegador. Porém, ele alterará o loop do WordPress, o que pode causar problemas caso não o redefinirmos após executar uma consulta.
Já a função get_posts reinicia automaticamente o loop sempre que você executa uma consulta no WordPress. Ela permite que você envie múltiplas consultas de posts para o banco de dados do WordPress facilmente.
Sugestão de Leitura
Confira nossos outros tutoriais do WordPress:
Como Adicionar Posts Relacionados no WordPress Como Agendar Posts no WordPress
Parâmetros da Função get_posts do WordPress
A função get_posts tem vários parâmetros para aplicar filtros personalizados. Alguns dos parâmetros mais utilizados no núcleo do WordPress são:
- Numberposts : define o número de posts que a função irá recuperar. O valor padrão desse parâmetro é cinco.
- Category: determina a categoria dos posts recuperados.
- Include: define os IDs de post que você deseja incluir nos resultados da consulta.
- Exclude: especifica os IDs dos posts que você deseja excluir dos resultados da consulta.
- Post_type : filtra o tipo de objeto de post que sua consulta personalizada recuperará. Pode ser posts, páginas ou um tipo de post personalizado.
- Post_status : determina se a sua consulta retornará rascunhos, posts privados ou publicados.
- Order : classifica os posts recuperados em ordem crescente ou decrescente.
- Orderby : define os critérios de ordenação, como a data da publicação ou o número de comentários. Para recuperar posts aleatórios com esse parâmetro, use rand.
- Post_mime_type – consulta tipos de posts em anexo com base nos parâmetros do tipo MIME.
- Suppress_filters: determina se os filtros devem ser suprimidos para que a consulta não possa ser alterada. Esse parâmetro é definido por padrão como TRUE.
Sem os parâmetros personalizados, a função get_posts recuperará, por padrão, os posts mais recentes. Por isso, você precisa anexar um array de posts objeto à função e especificar os argumentos para filtrar os posts usando a seguinte sintaxe:
$example_array = get_posts($arguments); $arguments = array( "parameter_1" => value, "parameter_2" => value );
Objetos WP_Posts
A função get_posts do WordPress retorna um array de post objetos com várias informações sobre os posts do seu site. Algumas das propriedades comuns do post objeto são:
- ID: o número de identificação do post.
- post_author : o número de ID do usuário do autor do post.
- post_title: o título do post.
- post_date: a data de publicação do post no formato AAAA-MM-DD.
- post_content: o conteúdo do post.
- post _status – o status atual do post recuperado, por exemplo, publicado ou em rascunho.
- post_modified – a data da última modificação do post.
- comment_count– o número de comentários no post.
Use foreach para percorrer os arrays de posts e echo para exibi-los. Veja o exemplo de estrutura do código abaixo:
foreach($example_array as $post) { echo "<h1>" . $post->post_title . "</h1><br>"; }
Para mostrar os resultados em qualquer página, adicione a função get_posts a um template de tema filho. Outra alternativa é incluí-la no arquivo blog.php para mostrar os resultados em uma página de blog. Nos planos WordPress da Hostinger, esses arquivos podem ser facilmente acessados pelo Gerenciador de Arquivos.
Como Usar a Função get_posts no WordPress
Devido à sua variedade de parâmetros, a função get_posts do WordPress pode ser usada em diversos casos. Nesta seção, vamos explicar os casos mais comuns.
Como Obter os Posts Mais Populares
Alguns sites WordPress têm widgets que mostram os posts mais populares. Para habilitá-los, use get_posts para consultar um array de IDs de posts com base no número de comentários:
<?php $arguments = array( "orderby" => "comment_count", "posts_per_page" => 10 ); $posts_array = get_posts($arguments); foreach($posts_array as $post) { echo "<h1>" . $post->post_title . "</h1><br>"; echo "<p>" . $post->post_ID . "</p><br>"; } ?>
No exemplo acima, especificamos argumentos que contêm um array de parâmetros que vão filtrar os posts consultados. Nesse caso, usamos o parâmetro orderby para ordenar os posts com base no número de comentários.
Também usamos post_per_page para limitar para 10 o valor de publicações exibidas por página. Em seguida, criamos um array que chama a função get_posts, a qual usa $arguments para filtrar os posts.
Assim que a função recupera os posts, o método foreach cria um loop nos resultados. Então, a função echo exibe o ID e o título do post recuperado.
Como Ver Posts por Autor
Se seu site WordPress tem vários autores, procurar manualmente os posts de um autor específico pode ser um processo demorado e não muito prático. Uma maneira mais rápida de fazer isso é usar o parâmetro author para filtrar os posts:
<?php $arguments = array( "numberposts" => -1, "author" => 2 ); $sample_array = get_posts($arguments); foreach($sample_array as $post) { echo "<h3> " . $post->post_title . "</h3>"; echo "<p>" . $post->post_date . "</p>"; } ?>
Nos argumentos, usamos dois parâmetros: numberposts e author. O parâmetro numberposts limitará o número de posts exibidos. Quando o definimos como -1, todas as publicações serão recuperadas.
Já o parâmetro author irá filtrar os posts e mostrar somente as publicações de um autor específico com base no ID — neste caso, o ID do autor no exemplo que demos acima é 2. Para consultar vários autores, especifique os IDs em uma lista separada por vírgulas.
Como Ver Posts na Mesma Categoria
A função get_posts do WordPress é muito usada para recuperar posts por categorias. Existem diferentes parâmetros para realizar essa tarefa, sendo esses os mais comuns:
- category: com base no ID da categoria.
- category_name: usa o slug da categoria, como notícias ou patrocinado.
- category__and: consulta um array de vários IDs de categoria.
- category_not_in : recupera posts de um ID de categoria excluída.
Independentemente do parâmetro, a sintaxe é a mesma. A seguir mostraremos um exemplo de um trecho de código para consultar posts de uma categoria com o ID de 1:
<?php $arguments = array( "numberposts" => -1, "category" => 1, "orderby" => "date", "order" => "DESC" ); $category_array = get_posts($arguments); foreach($sample_array as $post) { echo "<h3> " . $post->post_title . "</h3>"; echo "<p>" . $post->post_ID . "</p>"; } ?>
No exemplo, definimos o número de posts para -1 para mostrar todos eles e especificamos o ID da categoria como o filtro. Nós também usamos os parâmetros orderby e order para classificar os posts consultados em ordem decrescente, com base nas datas de publicação.
A função get_posts exibirá posts em $category_array com base nos parâmetros $arguments. Em seguida, o código faz um loop nos resultados para exibir o ID e o título do post consultado.
Se você deseja recuperar posts com várias categorias, substitua o parâmetro category por category__and. Depois, use uma lista separada por vírgulas de IDs de categoria como valor. Por exemplo, o código a seguir exibirá posts com 1, 2 e 3 categorias:
"category__and" => array("1","2","3")
Os parâmetros category e category_name também podem aceitar um array como valor. Diferente do category__and, eles recuperarão posts de qualquer uma das categorias especificadas. Veja o exemplo abaixo:
"category_name" => array("news","archive","sponsored")
Nesse exemplo, o código mostrará todas as publicações que pertencem a uma ou mais das categorias especificadas. Se você usar category__and, a função mostrará penas posts de todas as três categorias.
Como Ver Posts com Meta Keys e Valor Correspondentes
Se seus posts do WordPress têm um campo personalizado, você pode usar get_posts para recuperá-los de acordo com uma meta key e um valor correspondentes. Confira abaixo os parâmetros importantes e suas funções:
- meta_key: busca posts com base na chave do campo personalizado.
- meta_value: consulta posts com base no valor da string da meta key.
- meta_value_num: filtra posts semelhantes a meta_value, mas usa um valor numérico.
- meta_compare: aplica uma operação para testar o parâmetro de valor meta.
Os usuários podem usar esses parâmetros juntos para recuperar posts com uma meta key e um valor específicos. Veja o exemplo abaixo:
<?php $arguments = array( "numberposts" => -1, "meta_key" => "color", "meta_value" => "blue", "orderby" => "date", "order" => "ASC" ); $category_array = get_posts($arguments); foreach($sample_array as $post) { echo "<h3> " . $post->post_title . "</h3>"; echo "<p>" . $post->post_date . "</p>"; } ?>
O código do exemplo consulta todos os posts com o campo color personalizado com um valor blue. Se você omitir o parâmetro meta_key , ele recuperará todos os posts com um valor blue, seja qual for o nome do campo personalizado desses posts. Por outro lado, a remoção do meta_value exibirá os posts com o campo personalizado color, independentemente do valor atribuído.
Já o meta_compare permite que você especifique uma operação para modificar como a meta key e o valor atuam. Confira o trecho de código a seguir:
<?php $arguments = array( "numberposts" => -1, "meta_key" => "color", "meta_value" => "blue", "meta_compare" => "!=", ); ?>
Usamos o valor != para excluir posts com o valor da meta key especificado. Portanto, ele mostrará um array de posts que excluem aqueles com o valor meta blue. Recomendamos consultar a documentação do WordPress (link em inglês) para conseguir os valores completos de operação.
Você também pode usar vários pares de meta key e valor para criar uma consulta mais específica. Para isso, use o parâmetro meta_query usando os arrays de filtro como valor. Depois, use a função relation com o valor AND ou OR para estabelecer relações entre os arrays. Confira a sintaxe abaixo:
<?php $arguments = array( "post_type" => "postname", "meta_query" => array( "relation" => "relation", array( "key" => "keyname", "value" => "keyvalue", "compare" => "operation", ), array( "key" => "keyname", "value" => "keyvalue", "compare" => "operation", ), ), ); ?>
Como Ver um Tipo de Post Personalizado com Taxonomia Personalizada
A Taxonomia do WordPress é um mecanismo que permite agrupar conteúdo de acordo com suas relações ou características. As taxonomias padrão para posts do WordPress são categoria e tag, mas você pode criar novas taxonomias se precisar.
Se o seu site WordPress tiver um tipo de post personalizado, a taxonomia ajudará a categorizar seu conteúdo de forma mais específica. Um tipo de post de filme, por exemplo, pode ter taxonomias personalizadas como gênero e data de lançamento.
A consulta de posts da mesma taxonomia usa uma função similar à categoria. Use o nome da taxonomia personalizada como parâmetro e especifique o nome do termo ou identificador como valor. Por exemplo, o trecho de código abaixo irá consultar um tipo de publicação personalizada chamada filme (movie) para posts com o gênero crítica (review):
<?php $arguments = array( "numberposts" => -1, "post_type" => "movie", "genre" => "review", "orderby" => "date", "order" => "ASC" ); $category_array = get_posts($arguments); foreach($sample_array as $post) { echo "<h3> " . $post->post_title . "</h3>"; echo "<p>" . $post->post_date . "</p>"; } ?>
Você também pode usar mais de um parâmetro para criar uma consulta de post complexa com tax_query. Ele recebe um array de arrays como valor, cada um contendo os seguintes parâmetros:
- taxonomy : o nome da taxonomia.
- field: o método para selecionar o termo da taxonomia, seja com um ID, slug, ou nome. Ele usa o ID por padrão.
- terms: o termo de taxonomia conforme o campo (field). Para filtrar várias taxonomias, use um array como valor.
- include_children: a regra que define se deve incluir a taxonomia filha. Esse parâmetro é definido como TRUE por padrão.
- operator: a operação lógica para os parâmetros. Os valores incluem IN, NOT IN, AND, EXISTS, e NOT EXISTS.
Por exemplo, o código a seguir irá pesquisar posts com a tag John da taxonomia People (pessoas):
<?php $arguments = array( "numberposts" => -1, "tax_query" => array( array( "taxonomy" => "people", "field" => "slug", "terms" => "John", ), ), "orderby" => "date", "order" => "ASC" ); ?>
Para usar várias consultas de taxonomia, adicione outro array ao parâmetro tax_query. Especifique também a relação entre os arrays usando os parâmetros de relation com valores de AND ou OR. Confira a seguir um exemplo de array:
<?php $arguments = array( "tax_query" => array( "relation" => "AND", array( "taxonomy" => "movie_genre", "field" => "slug", "terms" => array( "thriller", "fantasy" ), ), array( "taxonomy" => "actor", "field" => "term_id", "terms" => array( 90, 105, 207 ), "operator" => "NOT IN", ), ), ?>
Conclusão
Neste tutorial, vimos que a função get_posts do WordPress é utilizada para recuperar uma matriz (array) de posts, páginas ou tipos de post personalizados do banco de dados, com base em parâmetros de consulta específicos. Ela é usada para exibir rapidamente posts que correspondem aos critérios fornecidos, como contagem de comentários ou meta keys.
Essa função usa a classe WP_query para criar uma consulta SQL e enviá-la para o banco de dados do WordPress. O banco de dados então retorna um array de objetos de post representando as publicações do site.
Existem vários parâmetros de get_posts, como numberposts, category e post_type. A função também retorna objetos WP_posts que contêm dados do post, como ID, post_author epost_title.
Desenvolvedores usam a função WordPress get_posts para diversas tarefas e cenários. Geralmente, essa função pode ser usada para recuperar posts com o maior número de comentários, o mesmo autor, categorias semelhantes e taxonomias personalizadas.
Perguntas Frequentes sobre get_posts do WordPress
Para ajudar você a entender mais sobre a função WordPress get_posts , vamos agora responder algumas das perguntas mais frequentes sobre o assunto.
Qual é a Diferença Entre get_posts e WP_query?
Ambos são métodos para consultar e exibir posts do banco de dados do seu site. Porém, a classe WP_query altera o loop do WordPress após cada consulta, podendo causar erros se usada de maneira errada.
Já o método get_posts reinicia automaticamente o loop após exibir os posts solicitados, o que a torna menos propensa a erros e mais conveniente.
Qual é a Diferença Entre as Funções get_posts e get_pages?
Ao contrário da get_posts, a função get_pages não usa a classe WP_query e consulta diretamente o banco de dados. Essas funções do WordPress também têm diferentes parâmetros e informações recuperadas. Por exemplo, a get_pages não usa os parâmetros de valor e meta key. Ela também consulta apenas páginas e tipos de posts hierárquicos.