¿Cómo clonar el objeto WP_Query global y cambiar solo un parámetro?

1 minuto de lectura

Avatar de usuario de Alexandru
Alejandro

He añadido un nuevo post_type en mi instalación de WordPress y me gustaría consultar esas publicaciones y usarlas en un bucle. Lo que pasa es que tengo que construir manualmente los argumentos dependiendo de si es una página de categoría, o una página de etiquetas, etc.

¿Hay alguna forma de reutilizar el objeto WP_Query global ya disponible, modificar el parámetro? post_type y ejecutar la consulta?

Esto es lo que quiero evitar:

$query = array(
  'post_type' => 'vehicle',
);

if( is_category() ){
  $query['category_name'] = get_query_var('category_name')
}

if( is_category() ){
  $query['category_name'] = get_query_var('category_name')
}

if( is_tag() ){
  $query['tag'] = get_query_var('tag')
}


// ... and so on

$loop = new WP_Query($query);

no quiero usar el pre_get_posts porque hacerlo alterará la consulta global, que se utiliza para el resto del sitio web.

Lo he arreglado así:

$query = $wp_query->query_vars;

$query['post_type'] = 'vehicle';

$loop = new WP_Query($query);

No sé si es el enfoque correcto, pero funciona para mí.

¿Ha sido útil esta solución?