Execute posts_where e posts_join apenas na consulta principal

Usando o gancho pre_get_posts , eu posso pegar $query como um argumento. Mas em posts_where e posts_join hook, recebo as respectivas cláusulas e não a consulta. O problema é que o gancho está sendo executado em todas as consultas, não apenas na principal.

Dado o seguinte código, o código será executado uma vez em cada consulta, a página será executada:

 add_filter('posts_join', 'my_join'); function my_join($join) { echo 'lala'; return $join; } 

Como posso saber se a consulta é a principal, então ela só é executada uma vez?

Solutions Collecting From Web of "Execute posts_where e posts_join apenas na consulta principal"