Para un proyecto necesitaba modificar mucho el comportamiento de WP_Query. Entonces, lo que hice fue extender WP_Query básicamente así:
class eacf_shared_query extends \WP_Query {
function query( $query ) {
// do things before ...
$posts = parent::query($query);
// do things after ...
return $posts;
}
Esto funciona como un hechizo para todas mis consultas personalizadas para las que ahora uso mi clase extendida, pero no puedo encontrar una manera de meter esto en main_query.
Entonces mi pregunta es: ¿Hay alguna forma conocida de reemplazar / extender la clase WP_Query en main_query?
Encontré que la solución anterior era la única solución y no fui más lejos con el uso de los filtros provistos dentro de la causa original de la clase:
- Parece que no hay un par de filtros que esté garantizado para ejecutarse antes y después de la consulta, no puedo lograr una construcción como la del ejemplo anterior.
- Mi lógica "hacer cosas después" contiene llamadas anidadas a WP_Query () que terminan fácilmente en un bucle de consulta si uso filtros.
- Los filtros de SQL no parecen ser lo suficientemente potentes como para crear una sola consulta y obtener todas las publicaciones (como la creación de una consulta UNION). Tengo la necesidad de fusionar publicaciones de diferentes blogs en una consulta y parece que esto no se puede lograr con filtros como
posts_clauses_request
oquery
.