Suporte » Outros assuntos » WP_Query ou query_posts?

  • thiagonunes

    (@thiagonunes)


    Olá pessoal,

    Gostaria de saber a diferença entre a classe WP_Query e a função query_posts, sei que ambas são usadas para fazer coisas semelhantes, como por exemplo, excluir posts de determinada categoria. Li em um blog que para alterar o loop principal deve-se usar WP_Query() ou get_posts()ao invés de query_posts. Nisto posto, vamos as dúvidas:

    Porque usar WP_Query() ao invés de query_posts?
    Query posts deve ser abandonado ou pode existir o caso de usá-lo fora do loop principal?

    Agradeço desde já toda e qualquer opinião.

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Moderador Claudio Sanches

    (@claudiosanches)

    É bem simples.

    O query_posts funciona assim:

    function query_posts($query) {
        $GLOBALS['wp_query'] = new WP_Query();
        return $GLOBALS['wp_query']->query($query);
    }
    

    Desta forma a finalidade do query_posts é alterar a query nativa do WP (a variável global wp_query) apenas.
    Criar vários loops com ela pode acabar criando também problemas… Principalmente com paginação ou outros query_posts na mesma página que irão herdar o comportamento.

    Já o WP_Query cria uma nova query e nesse caso é indicado para criar múltiplos loops em uma página já que não vai usar a query nativa ou influenciar com as outras querys.

    Você não falou, mas vou citar outros casos xD

    Também é possível usar o filtro pre_get_posts para alterar o wp_query no lugar do query_posts.
    O que é mais indicado para este caso.

    Para criar loops secundários você pode usar o get_posts que usa o WP_Query.
    E também existe o get_pages que funciona similar ao get_posts entretanto ele faz uma consulta direta no banco sem usar o WP_Query.

    Criador do tópico thiagonunes

    (@thiagonunes)

    Olá Claudio Sanches,

    Primeiramente obrigado pela contribuição, se ambos, query_posts e WP_Query não utilizam a query nativa, qual função ou classe o faz?

    query_posts pode ocasionar lentidão no carregamento das páginas?

    Grato!

    Moderador Claudio Sanches

    (@claudiosanches)

    Você não entendeu cara.
    O query_posts usa a query nativa. Mas recomendo usar o filtro pre_get_posts para fazer esse tipo de alteração.

    Se tiver vários query_posts em uma página com certeza vai causar lentidão.

    Criador do tópico thiagonunes

    (@thiagonunes)

    Legal cara, agradeço pelos exclarecimentos.

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘WP_Query ou query_posts?’ está fechado para novas respostas.