En el mundo del desarrollo Web WordPress se ha posicionado como uno de los CMS más utilizados y con una gran versatilidad para modificar su código y crear sitios web completamente a la medida.
Esa es una de las grandes ventajas que tienes este poderoso CMS, el cual ya abarca más de 30% de sitio web desarrollados con su tecnología.
Dentro de estas opciones que incluye se encuentra WP_Query en WordPress, el cual nos permite personalizar las visualizaciones de páginas y post relacionados wordpress de nuestro sitio web, permitiéndonos simplificar las peticiones completas a nuestro base de datos.
En este artículo veremos un poco más a detalle sobre lo que es WP_Query y como se puede usar en un sitio web desarrollado con WordPress.
Tabla de contenidos
¿Qué es WP_Query y para qué sirve?
Como configuración por defecto de su código, WordPress ejecuta una consulta en cada una de las páginas de nuestro sitio web que tengamos creadas, lo que se muestre está determinado por el tipo de página que se está viendo o consultando en este momento, si por ejemplo una página estática está siendo vista entonces WordPress ejecuta una consulta para así obtener la página que tenga el ID, por otro lado, si una página con diferentes entradas que tenemos publicadas es visitada, entonces en este caso todas las entradas serán obtenidas y mostradas.
En algunas ocasiones es posible que necesitemos mostrar contenido específico que necesitamos y obtener la página de forma distinta, ya sea en el body con tenido principal de la entrada o alguna otra parte de nuestra página como la barra lateral, pie de página u otro lugar.
Este tipo de configuraciones podemos hacerlas posible al utilizar la clase de WordPress WP_Query, la cual nos permitirá acceder de forma rápida a las variables y funciones que ya han sido creadas dentro de su núcleo sin tener que escribir un código personalizado.
De esta forma, usando WP_Query en WordPress podremos construir consultas a nuestra base de datos y mostrar la información como una entrada especifica que deseamos mostrar, por ejemplo:
<?php
$entradas = new WP_Query( 'category_name=divi' );
?>
Las consultas realizadas con esta clase nos permite proteger nuestro sitio web de ataques de tipo SQL así como otro tipo de brechas de seguridad, adicional a esto esta clase nos crea un objeto y nos evita tener que conocer toda la estructura de nuestra base de datos.
Por lo tanto, podemos decir que WP_Query en WordPress nos permite hacer consultas a la base de datos a nuestra tabla wp_posts y así recuperar cualquier contenido que necesitemos, sea relativo a las entradas y páginas usando el método the_post().
Cómo usar WP_Query
Una de las principales forma de uso de esta clase es mostrar artículos o entradas que tendamos creadas en nuestro blog WordPress, también nos permite listar los productos que tengamos añadido en nuestra tienda online o si deseamos mostrar una página.
Dentro de las diferentes opciones que tenemos para utilizar esta clase podemos decir que podríamos utilizarla si necesitamos por ejemplo:
- Añadir un listado de artículos relacionados con una entrada actual que esté visualizando un usuario, por ejemplo artículos de una misma categoría.
- Crear bucles en una misma página.
- Insertar una lista personalizada de artículos recientes en nuestra barra lateral o en el pie de página de nuestro sitio web.
- Generar consultas de alguna taxonomias en WordPress personalizada.
Una vez tenemos un poco más claro sobre esta clase y que nos permite realizar, veamos algunas formas de añadirlo dentro de nuestro sitio web en WordPress.
WP_Query y los bucles (the Loop).
En WordPress los bucles determina el contenido que se muestra en un sitio web, estos bucles nos permiten extraer resultado de nuestras entradas de la base de datos de WordPress, y asi determinar como se muestran estos resultados y contenido de acuerdo a la plantilla de archivos que esté utilizando nuestro tema.
Podemos decir entonces que el Loop es un mecanismo por defecto en WordPress que nos permite generar nuestras publicaciones de acuerdo a la cantidad de publicaciones que tenemos en nuestro sitio web.
Podemos usar el Loop de WordPress para diferentes cosas en nuestro sitio web, ya sea mostrar títulos, extractos de nuestra página de blog, mostrar contenido o los comentarios en una publicación, también nos permite mostrar el contenido de una página individual utilizando etiquetas de la plantilla y mostrar campos personalizados en WordPress así como tipos de Entrada Personalizada en WordPress o en inglés Custom post type WordPress.
Un ejemplo del bucle podemos verlo en el siguiente ejemplo
<?php
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
// Mostrar contenido del post
endwhile;
endif;
?>
En este ejemplo, tenemos la función have_posts() verifica si hay publicaciones para mostrar, si hay alguna entonces ejecuta un bucle while para tomar cada una de las publicaciones y recuperar los datos de ella con la función the_post(), de esta forma la data es mostrada en la página a través de código PHP y HTML, el ciclo while que tenemos continuará ejecutándose mientras exista publicaciones para mostrar de lo contrario para y no los continúa ejecutando.
Un ejemplo para usar este tipo de código en tu sitio web es mostrar las publicaciones basadas en una categoría específica.
<?php
// The Query
$post_category = new WP_Query( 'category_name=divi' );
// The Loop
if ( $post_category->have_posts() ) {
echo '<ul>';
while ( $post_category->have_posts() ) {
$post_category->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// No se encontraron publicaciones
}
/* Restaurar los datos originales de la publicación */
wp_reset_postdata();
Como puedes ver en el código sigue mostrando la estructura básica de un bucle añadiendo las condiciones if y while, dentro de las posibilidades que nos permite la clase WP_Query está la capacidad de personalizar lo que deseamos mostrar ya sean entradas asociadas a categorías de WordPress, autores o restringir cualquier resultado basado en fechas, etiquetas o algún campo personalizado que tenemos añadido en nuestro sitio web.
Utilizando Argumentos en WP_Query en WordPress
Esta es una de las partes esenciales de la consulta, ya que al utilizarlo dentro de nuestro código le estamos indicando a la base de datos que es lo que deseamos incluir de los datos que nos regresara como resultado.
Los argumentos podemos configurarlos para determinar los resultados exactos que deseamos mostrar, también los podemos utilizar para cambiar el valor de las variables, por ejemplo si deseamos cambiar la forma en la que aparece el listado de categorías en una página. Nos ayudarán a definir una matriz de variables y valores, entonces dentro de nuestra matriz podemos usar los argumentos para decirle a nuestra base de datos presente las categorías en orden ascendente o descendente y así personalizar el orden de los resultados.
Al añadir la estructura de nuestro WP_Query es importante siempre incluir 4 elementos principales:
- Los argumentos de nuestra consulta usando los diferentes parámetros disponibles.
- La consulta que deseamos realizar.
- El loop o bucle que nos permite mostrar el contenido que necesitemos mostrar.
- Reinicio de los datos de nuestra publicación.
Tenemos que tener en cuenta que dentro de nuestra consulta en nuestro WP_Query necesitamos estructurar los parámetros dentro de un array.
$args = array(
'taxonomy' => 'category',
'orderby' => 'name',
'title_li' => 'Categories'
);
Un ejemplo puede ser si deseamos mostrar las publicaciones de un autor en nuestro sitio web basado en su ID.
//Mostrar las publicaciones utilizando el ID del autor
$query = new WP_Query( array( 'author' => 123 ) );
Si no añadimos ningún argumento WP_Query dentro de nuestra consulta, este no mostrará ningún contenido, ya que no sabrá que necesita mostrar.
Parámetros en WP_Query
El potencial completo de esta clase proviene de la variedad de parámetros disponibles con los que podemos mejorar la búsqueda en nuestra base de datos, los valores específicos para cada parámetro se denominan argumentos (args).
Dentro de WP_Query hay 18 diferentes parámetros agrupados en:
- Author Parameters
- Category Parameters
- Tag Parameters
- Taxonomy Parameters
- Search Parameters
- Post & Page Parameters
- Password Parameters
- Post Type Parameters
- Status Parameters
- Comment Parameters
- Pagination Parameters
- Order & Orderby Parameters
- Date Parameters
- Custom Field (post meta) Parameters
- Permission Parameters
- Mime Type Parameters
- Caching Parameters
- Return Fields Parameter
Como puedes ver son muchas categorías que necesitamos conocer y no podemos tocar en esta entrada, pero podemos mencionar algunos de los más utilizados como:
- posts_per_page: índica el número de publicaciones que deseas mostrar.
- autor: muestra si laslas publicaciones pertenecen a uno o más autores en función de los ID.
- cat: indica cuáles son las categorías a las que debe pertenece los resultados.
- etiqueta: determina si las publicaciones deben tener una o más etiquetas según las etiquetas.
- orderby: define los criterios por los que deseas que se ordenen las publicaciones recuperadas (por ejemplo, por fecha, por número de comentarios, etc.).
- order: determina si los resultados se ordenan en orden ascendente o descendente.
- post_type: define si WP_Query recupera publicaciones, páginas o tipos de publicaciones personalizadas.
- post_status: determina si la consulta recupera publicaciones publicadas, programadas, en curso o eliminadas.
Por ejemplo, si quisiéramos buscar publicaciones que tengan etiquetas específicas como “Divi”, “WordPress” podríamos utilizar una consulta como:
<?php
$arguments = array(
"tag" => "divi,wordpress"
);
$posts = new WP_Query($arguments);
?>
Modificar objetos con métodos y propiedades
Dentro de su documentación, WordPress no recomienda alteras o modificar las propiedades de una clase como WP_Query; sin embargo, si podemos interactuar con ellas a través del uso de métodos.
Los métodos funcionan como las funciones, mientras que las propiedades son como las variables, WP_Query tiene muchas propiedades, las cuales van desde simples como los $posts hasta otras un poco más difíciles.
Dentro de la documentación actual de WP_Query que podemos encontrar en la documentación oficial de WordPress nos muestran una cantidad de funciones que nos mencionan como podemos interactuar con ellas para obtener el resultado que deseamos.
Ejemplos de WP-Query
Una vez tenemos un poco más claro como funciona WP_Query podremos comenzar a utilizarlo para realizar nuestras consultas personalizadas y añadir contenido que se adapte a lo que deseamos, así como el diseño de nuestro sitio web.
Algunos de los ejemplos más comunes que podemos utilizar con esta clase son:
Obtener las publicaciones recientes de la semana
Cuando un usuario ingresa a nuestro sitio web a buscar cualquier información estará interesado en encontrar la información más reciente que estemos añadiendo, en este caso podemos hacer uso de WP_Query para encontrar las publicaciones basadas en una parámetro como la fecha.
<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>
En este ejemplo podemos ver que la consulta busca dentro de las publicaciones publicadas en esta semana, utilizando el parámetro date_query para obtener el contenido que necesitamos.
Para obtener la semana actual añadimos una matriz adicional dentro de date_query con los argumentos “Y” y “W” los cuales son abreviaturas del año y semana actual, lo que nos garantiza que se extraen los datos de la semana actual.
Mostrar entradas de un mismo autor
Otro de los ejemplos muy comunes donde podemos utilizar la clase de WP_Query en WordPress es mostrar a los usuarios las entradas basados en un autor en específico, para hacerlo solo necesitas utilizar la siguiente consulta dentro de tu sitio web.
<?php
$arguments = array(
"author_name" => "admin",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>
Como podemos ver en el ejemplo, la consulta busca las publicaciones que tienen el author_name y que este coincida con el user_nicename “admin”. De esta forma, a través de “posts_per_page” podremos establecer el límite de publicaciones a mostrar.
Mostrar las entradas populares de la misma categoría
Una opción que tenemos disponible con esta clase es mostrar el contenido que más deseamos o está mejor posicionado en nuestro sitio web, esto es muy útil sobre todo si nuestro sitio web está orientado a compartir información recurrente sobre algún artículo o post y queremos destacar los más populares que se encuentren relacionados por una misma categoría.
Para esto podemos utilizar el parámetro de WP_Query “orderby” y configurarlo a su vez con el argumento “comment_count” y de esta forma mostrar el resultado que deseamos.
<?php
$arguments = array(
"category_name" => "divi",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>
La consulta como vemos, busca las publicaciones dentro de la categoría divi, ordena los resultados de acuerdo al número de comentarios y nos devuelve como resultado las 5 publicaciones con mayor número de comentarios den nuestro sitio web.
Conclusiones:
La clase WP_Query WordPress nos permite crear las consultas personalizadas que necesitemos en nuestro sitio web y mostrar la información como necesitamos, esta es una herramienta muy potente que nos permite construir consultas y mostrar el contenido como lo deseamos en nuestro sitio web desarrollado con WordPress.
Con todos los parámetros y argumentos disponibles dentro de WP_Query que nos permiten personalizar las búsquedas, este puede ser el método ideal para personalizar lo que el usuario visualiza y así ofrecer a nuestros lectores el contenido más relevante que deseamos tengan disponible cuando visitan nuestro sitio web.
También te puede interesar:
- Página de entradas WordPress
- Programar entradas en WordPress
- Popup WordPress
- Actualizar php wordpress
- W3 Total Cache
- Plantillas wordpress
¿Te ha resultado útil este artículo?
Equipo de soporte WordPress y Woocommerce en Webempresa.