Alterando a query principal com segurança usando pre_get_posts
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' );
}
} );