WP_Query es una clase definida dentro del core de WordPress que se ocupa de realizar consultas complejas tanto para las entradas (posts) como para las páginas, este determinara el tipo de consulta que estamos tratando de hacer, por ejemplo si es una categoría en especifico que deseamos ver, un archivo por fecha o inclusive una búsqueda.
Con funciona
Existen varias formas de realizar una consulta por medio de un Query, están desde los Query sencillos que utilizamos diariamente con un simple Loop para mostrar todos los posts desde nuestra página single.php o page.php el cual por lo general no es necesario pasarle argumentos que condicionaran la consulta, por ejemplo:
// Query o consulta $the_query = new WP_Query( $args ); // El Loop (pregunta si dentro del query existen posts) if ( $the_query->have_posts() ) { // Mientras existan posts muestrelos while ( $the_query->have_posts() ) { $the_query->the_post(); echo get_the_title() ; } }
Esta es la consulta por medio de un Query que podríamos realizar, la cual no devolverá ningún resultado ya que en la linea 2 en la variable $args (argumentos) no esta recibiendo nada, y es en esa linea de código donde pasaremos los parámetros de consulta.
Existen multiples parámetros que podemos pasar para condicionar nuestras consultas y listare algunos de los mas utilizados:
- post_type – Usado para mostrar un tipo de post en especifico ej. post – page – custom
- category_name – Mostrar los que pertenecen a esta categoría, usando el slug ej. cultura – tecnologia
- post_status – Mostrar los posts con un estado determinado ej. publish – pending – draft
- taxonomy – Funciona muy parecido a category_name solo que muestra la taxonomía creada.
- tag – Muestra los posts de cierto tag o tags que le pasemos como parámetros.
Si desean saber mas al detalle de todos los tipos de parámetros que podemos pasar por nuestro Query y realizar consultas con multiples Loops o mas avanzadas pueden revisar la documentación completa en WordPress acerca de los Query.
La manera mas fácil de pasar cada uno de los parámetros es por medio de un Array de datos como se muestra a continuación:
$args = array( 'post_type' => 'post', 'category_name' => 'sin-categoria', 'post_status' => 'publish', ); // Query o consulta $the_query = new WP_Query( $args ); // El Loop (pregunta si dentro del query existen posts) if ( $the_query->have_posts() ) { // Mientras existan posts muestrelos while ( $the_query->have_posts() ) { $the_query->the_post(); echo get_the_title() ; } }
Entre la linea 1 y 5 podemos notar la creación de nuestro array el cual pasa dos parámetros como lo son el post_type que nos mostrara su asignación ‘post’, le pasamos también category_name que serian los post de cierta categoría en este caso ‘sin-categoria’ y por último el estado del post que se declara con post_status que seria de estado ‘publicado’.
Esos argumentos se pasan por medio de la variable $args que esta al final de la linea 8.
Un último ejemplo
En el artículo acerca de Categorías y tags en los post type de WordPress explique la creación de taxonomías para ser usadas como categorías o tags dentro de WordPress, pero como podemos crear un Query personalizado para este post type?.
$wp_query = new WP_Query( array( 'post_type' => 'book', 'posts_per_page' => 5, 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'genero', // Nombre de la taxonomía creada 'field' => 'slug', // Como pasaremos el parámetro, en este caso como el slug 'terms' => 'literatura', // Slug de la taxonomía ) ) )); // Loop WordPress while ($wp_query->have_posts()) : $wp_query->the_post(); the_title(); the_content(); endwhile;
Si te ha gustado este ultimo artículo no olvides compartirlo con todos.