Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. WordPress
Code

Dominando WP_Query: Ações (Actions) e Filtros (Filters)

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called Mastering WP_Query.
Mastering WP_Query: Related Functions
Mastering WP_Query: Properties and Methods

Portuguese (Português) translation by João Fagner (you can also view the original English article)

Bem-vindo à terceira parte da nossa série chamada "Dominando WP_Query". Na parte anterior, desbarávamos as 13 funções do WordPress que estão relacionadas com a classe WP_Query. Nesta parte, iremos rever os ganchos do WordPress filtros (filters) e ações (actions) que você pode usar em conjunto com WP_Query.

Assim, sem mais delongas, vamos começar!

Filtros Relacionadas-WP_Query

A "Referência de (Filtros) Filters" no Codex, existem 16 filtros listados sobre o título "WP_Query Filters". Nesta seção, iremos falar sobre eles. Será uma seção bastante rápida porque a maioria dos filtros são sobre diferentes "cláusulas" de uma consulta de banco de dados feito pela classe WP_Query.

Voltaremos a eles logo após passar pelos filtros que não estão relacionados com as cláusulas.

Filtrando o Número de Posts Encontrados Para a Consulta: found_posts

Este filtro permite que você altere o número de itens encontrados sem o limite que vem do WP_Query com argumento posts_per_page.

Este filtro é particularmente útil para a criação de paginação personalizada. Vamos ver o que o Codex diz:

Por exemplo, se você está declarando um valor de offset (deslocamento) personalizado em suas consultas, WordPress NÃO irá deduzir o offset a partir do parâmetro $wp_query->found_posts (por exemplo: se você tem 45 lugares utilizáveis após um deslocamento de 10, WordPress irá ignorar o offset e ainda dar found_posts um valor de 55).

O que faz sentido.

Filtrando e Execultando a Consulta e Recuperando os Posts Encontrados: found_posts_query

O número de itens encontrados é calculada com a SELECT FOUND_ROWS() comando em MySQL. Este filtro te permite mudar este comando em algo a mais e para o caso de ter que calcular o número de itens encontrados de uma maneira diferente.

Filtrando Toda Consulta SQL: posts_request

Se você quiser alterar a consulta SQL, concluído este é o filtro que você deve usar. Ele basicamente sobrescreve toda consulta  SQL criada pela classe WP_Query.

Filtrando o Array e Retorno da Consulta: posts_results

Se você quiser alterar o array PHP que gera WP_Query com a consulta SQL, você pode usar esse filtro. Há um exemplo puro ao longo do Codex para que você possa ver como ele funciona.

(Por favor, note que este filtro manipula um array cru (raw) que é gerado a partir da consulta SQL.)

O Array de Posts obtida do filtro: the_posts

Ao contrário do posts_results o filtro the_posts aguarda que o array seja processado internamente, significando que o array deve ser verificados em relação a posts não publicados e posts fixados (sticky). Use isto caso não queira posts não publicados ou posts em seu array.

Filtrando a Lista de Campos (e a Cláusula SELECT) da Consulta: posts_fields

A cláusula SELECT de uma consulta SQL determina quais campos do banco de dados serão selecionados a partir das linhas de base de dados resultante e esse filtro te ajuda a filtrá-la.

Filtrando a Cláusula LIMIT de Consulta: post_limits

A cláusula de LIMIT de uma consulta SQL define as limitações para a consulta e este filtro te ajuda a filtrá-la.

Filtrando Cláusula DISTINCT da consulta: posts_distinct

A cláusula DISTINCT de uma consulta SQL afirma que a consulta deve retornar apenas resultados diferentes e este filtro te ajuda a filtrá-la. Naturalmente WP_Query não retorna resultados distintos, mas quando você usar este filtro com uma função que retorna "DISTINCT" a consulta será ajustada para retornar apenas os resultados diferentes.

A cláusula WHERE da Consulta de Filtragem: posts_where

A cláusula WHERE de uma consulta SQL é usada para filtragem do MySQL as instruções SELECT, INSERT, UPDATE ou DELETE e esses filtros te ajudam a filtrar esse filtro. Enquanto a classe WP_Query faz todo o trabalho necessário para filtrar os resultados, você pode dar um passo maior usando esse filtro.

A cláusula WHERE da Consulta Após a Paginação é Calculada Filtrando: posts_where_paged

Este filtro é uma iteração para o filtro de posts_where que você pode usar com consultas de paginação.

Filtragem da Cláusula WHERE de uma consulta de pesquisa: posts_search

Outra iteração com o filtro posts_where, este filtro pode ser usado para alterar a cláusula WHERE de uma consulta que é usada para obter os resultados de pesquisa no WordPress.

A cláusula JOIN da Consulta de Filtragem: posts_join 

A cláusula JOIN de uma consulta SQL permite que você trabalhe o seu comando SQL dentro de várias tabelas do banco de dados e este filtro te ajuda a filtrá-la. Esta é uma das partes avançadas do MySQL, então eu não recomendo usar este filtro se não souber muito bem como o JOIN no MySQL funciona.

A cláusula JOIN da Consulta Após a Paginação é Calculado da Filtragem: posts_join_paged

Assim como posts_where_paged é uma iteração de posts_where, isto é uma iteração para o filtro de posts_join que funciona em consultas de paginação.

A Cláusula ORDER BY da Consulta de Filtragem: posts_orderby

A cláusula ORDER BY de uma consulta SQL organiza a ordenação da consulta e este filtro ajuda a filtrar a ordem.

A Cláusula GROUP BY da Consulta de Filtragem: posts_groupby

A cláusula GROUP BY de uma consulta SQL faz a consulta retornar resultados "agrupados" por um campo de banco de dados e esse filtro ajuda você a filtrar agrupando os resultados.

Filtrando, Todas as Cláusulas de Consulta: posts_clauses

Se você quer lidar com todas as cláusulas ao mesmo tempo, existe um filtro para isso também: posts_clauses. Este filtro abrange o WHERE, GROUP BY, JOIN, ORDER BYDISTINCTSELECT e clausulas de LIMITS.

Ações WP_Query-Related

Agora nós revisamos os filtros relacionados a WP_Query, vamos passar para o outro tipo de gancho: ações (actions).

Interferir na Consulta Antes de Executa-la: pre_get_posts

Antes que a consulta seja iniciada, você pode interagir com ela (por exemplo, inserir variáveis de consulta adicionais) usando esta ação. Vamos ver um exemplo rápido de Tom McFarlin para aprender como excluir uma categoria do loop principal:

Lidar com o Parsing da Consulta: parse_query

Ao contrário de pre_get_posts, que intervém com a consulta antes das variáveis de consulta serem definidas. A ação de parse_query manipula o processo após configurar as variáveis de consulta. Assim, você deve usar essa ação caso você queira verificar as variáveis atuais e agir em conformidade com elas.

Modificar Post Object: the_post

O termo the_action é um pouco confuso porque é o nome de um gancho de ação, uma função relacionados WP_Query que também é um método da classe WP_Query

Esta ação, como o Codex diz nos permite modificar o objeto do post imediatamente após sendo estabelecido a consulta. Usando esta ação, você pode alterar a saída diretamente. Vamos ver um exemplo rápido:

Fim da parte três

Ações e filtros são sempre temas divertidos para falar e escrever. (Eu sei de fato que minhas duas séries sobre ações (actions) do WordPressfiltros (filters) no WordPress foram divertidas de escrever e desperta uma grande reação do nosso leitor). Espero que vocês tenham gostado deste post tanto quanto eu gostei de escrevê-lo.

Quer acrescentar alguma coisa ao artigo? Deixe um comentário abaixo na área de comentários. E se você gostou do artigo, não se esqueça de compartilhar com seus amigos!

Nos veremos na próxima parte, onde vou estar falando sobre as propriedades e métodos da classe WP_Query!

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.