Anonim

Avaria Rápida

  • query_posts - não use, exceto em casos extremos raros
  • pre_get_posts - use se você deseja alterar a consulta padrão em uma página
  • new WP_Query - use para obter resultados diferentes da consulta principal
  • get_posts - o mesmo que WP_Query, apenas retorna resultados no formato de matriz
  • query_posts

    O uso de query_posts não é mais recomendado. Existem maneiras melhores de realizar o que você está tentando realizar. Tentando alterar a consulta principal? Use a ação pre_get_posts para filtrar os resultados (veja abaixo). query_posts lança a consulta principal original para o lado (depois de já ter sido executada) e cria uma nova consulta principal. Ele substitui todas as variáveis ​​globais relacionadas à publicação e resulta em uma chamada de banco de dados completamente nova. Simplesmente não há razão para você não apenas alterar a consulta existente. Tenho certeza de que há alguns casos extremos em que ele deve ser usado, mas não consigo pensar em nada em cima da minha cabeça. Use uma das opções abaixo, pois elas provavelmente serão mais adequadas.

    pre_get_posts

    Este é um filtro. Isso modifica a consulta principal para uma página. Então, por exemplo, queremos alterar o número de resultados retornados na página inicial …

função tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); Retorna; }} add_action ('pre_get_posts', 'tj_change_home_number');

Isso alteraria a consulta principal para retornar apenas 2 postagens na página inicial.

WP_Query

A consulta principal em qualquer modelo chamado é uma instância do WP_Query . Quando você interage com as variáveis ​​globais de postagem em um modelo, esse é o resultado do WP_Query . Os casos de uso para isso são numerosos, mas, como em get_posts, eu declararia uma nova WP_Query com o objetivo de extrair postagens relacionadas, algo nesse sentido. Lembre-se de que, se você executar a função the_post () durante um loop através de uma nova WP_Query, execute a função wp_reset_postdata () depois de terminar o loop para redefinir os dados globais da postagem para a consulta principal original.

get_posts

Usando get_posts, você está efetivamente chamando um novo WP_Query e obtendo essas informações retornadas em um formato de matriz. Normalmente, usarei get_posts quando retornar postagens para um controle deslizante na página inicial ou chamar algumas postagens relacionadas em uma barra lateral. O WP_Query poderia ser usado com a mesma facilidade, mas é uma boa maneira de receber uma matriz de postagens sem modificar as variáveis ​​globais de post. Na minha opinião, é o mais simplista e mais fácil de usar. Não há chamadas de função necessárias após o retorno dos dados, apenas percorrendo uma matriz.

Isso pode ser um pouco confuso, então fique à vontade para fazer perguntas nos comentários abaixo.

Referência:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query x query_posts x get_posts x pre_get_posts