Você está em boa companhia com suporte incrível 🤝

Alterando a query principal com segurança usando pre_get_posts

Time Full Services Time Full Services
Nome do erro Alterando a query principal com segurança usando pre_get_posts
Severidade Atenção
Desde WordPress 3.7
Descrição Como modificar a consulta principal do WordPress sem quebrar o painel administrativo nem outras queries da página.

Como modificar a consulta principal do WordPress sem quebrar o painel administrativo nem outras queries da página.

Causa

Alterar parâmetros como meta_query, tax_query ou posts_per_page sem checar is_admin() e is_main_query() acaba afetando widgets, buscas internas e telas de listagem do wp-admin.

Como resolver

Sempre combine !is_admin() com $query->is_main_query() (e, se necessário, $query->is_home()/is_archive()) antes de alterar os parâmetros da query.

PHP
add_action( 'pre_get_posts', function ( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }

    if ( $query->is_post_type_archive( 'produto' ) ) {
        $query->set( 'posts_per_page', 12 );
        $query->set( 'orderby', 'title' );
    }
} );

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →