Aquí se explica cómo recuperar cualquier artículo de su elección con WP_Query

Aquí se explica cómo recuperar cualquier artículo de su elección con WP_Query

Si ha creado temas simples en el pasado, es probable que no haya tenido la necesidad de tomar publicaciones por su cuenta. Después de todo, WordPress carga las 10 publicaciones más recientes en la página principal y las publicaciones correctas en las páginas de archivo. ¿Qué pasa con los escenarios más complejos? ¿Qué sucede si desea una especie de mapa del sitio y desea enumerar todas sus publicaciones? y páginas ordenadas por fecha?

WP_Query es tu amigo, te permite extraer artículos de la base de datos según tus criterios. Puede recuperar todos los artículos de una sola categoría que también contiene determinadas etiquetas. Puede recuperar todas las páginas creadas el año pasado y las publicaciones que no tienen una imagen destacada.

En este artículo, le daré una visión detallada de cómo funciona WP_Query, ¡comencemos!

Una hebilla personalizada

La clave para trabajar bien con consultas personalizadas es dominar los argumentos que puede pasarles. Antes de ver eso, creemos un “esqueleto” rápido que podamos usar para enumerar los artículos. El bucle en una página de archivo normal se vería así:

<?php if ( have_posts() ) : ?> <?php while( have_posts() ) : the_post() ?> <?php endwhile ?> <?php else : ?> <?php endif ?>

Esto funciona muy bien porque antes de que se cargue la página, WordPress ya ha obtenido las publicaciones correctas. Cuando escribimos una solicitud personalizada, necesitamos un bucle personalizado. El código es muy similar, aquí está:

<?php $args = array( 'post_type' => 'post', 'post_status' => 'future' ); $scheduled = new WP_Query( $args ); if ( $scheduled->have_posts() ) : ?> <?php while( $scheduled->have_posts() ) : $scheduled->the_post() ?> <?php endwhile ?> <?php else : ?> <?php endif ?>

Creamos una nueva solicitud de WordPress usando el WP_Query class, pasándole parámetros para especificar los tipos de mensajes que necesitamos. Luego llamamos al have_posts () y el correo() métodos en nuestro $ planeado objeto.

Si es nuevo en la programación orientada a objetos y realmente no entiende por qué, no se preocupe, aún puede usar consultas personalizadas fácilmente. Nos centraremos en el $ args matriz a lo largo del mensaje, que será bastante sencillo.

Argumentos simples

Como mencioné, el principal “cuerpo de conocimiento” cuando se trata de WP_Query son sus argumentos. los Manuscrito los enumera todos, veremos los más útiles aquí.

Algunos argumentos son bastante simples, como el etiqueta o tag_id configuración. El primero lleva una etiqueta de slug, el último una etiqueta de identificación. También puede separar varios elementos con comas o usar identificadores negativos para indicar que desea recuperar publicaciones que sí lo hacen. no tener esa etiqueta en particular adjunta.

$args = array( 'post_type' => 'post', 'tag_id' => '22,92,44,-21' ); $our_posts = new WP_Query( $args );

El fragmento recupera artículos que tienen una de las tres primeras etiquetas adjuntas, pero no la cuarta. Si bien este sistema es lo suficientemente poderoso para necesidades simples, generalmente uso la consulta de taxonomía mucho más flexible de la que hablaré un poco más adelante.

los autor, nombre del autor, gato, Nombre de la categoría, s (para términos de búsqueda), post_status, Tipo de Posición son ejemplos de algunos campos más simples. Tenga en cuenta que algunos campos, como post_status requiere que pase una matriz de estados si desea utilizar varios valores.

$args = array( 'post_type' => array( 'post', 'page' ), 'post_status' => array( 'draft', 'publish' ), 'cat' => 'music,videos' ); $our_posts = new WP_Query( $args );

El ejemplo anterior recupera todos los artículos que son páginas o artículos; se publican o como un borrador y se les asigna la categoría de música o videos. Esto podría usarse para mostrar los títulos de cualquier contenido actual o planificado relacionado con música o videos.

Consultas de taxonomía

Para cosas simples, usar los argumentos mencionados para recuperar publicaciones basadas en categorías o etiquetas es suficiente, pero ¿qué pasa si tiene una taxonomía personalizada o necesita combinar múltiples parámetros? La respuesta está en el tax_query argumento que es en sí mismo una matriz. Primero veamos un ejemplo.

$args = array( 'post_type' => 'book', 'tax_query' => array( array( 'taxonomy' => 'genre', 'field' => 'slug', 'terms' => array( 'scifi', 'thriller' ), 'operator' => 'NOT IN', ), array( 'taxonomy' => 'author', 'field' => 'id', 'terms' => array( 92, 883, 399 ), ), 'relation' => 'AND', ), ); $query = new WP_Query( $args );

Aquí, recuperamos algunos artículos de nuestro tipo de publicación “libro”, agregando algunos parámetros de taxonomía. Usando dos matrices definidas en tax_query, especificamos que queremos extraer libros escritos por el autor 92, 883 o 399 que son no en el género de ciencia ficción o thriller. los relación El parámetro define la relación entre las dos matrices. En nuestro caso, se trata de una relación “y”, lo que significa que se deben cumplir ambas condiciones.

Si hubiéramos usado “o” habríamos elegido libros que no están en la categoría de ciencia ficción o suspenso o que están escritos por los tres autores especificados. En términos sencillos, esto significa: quiero ver todos mis libros excepto el género de ciencia ficción y suspenso. Sin embargo, quiero ver todos los libros de Terry Pratchett, Douglas Adams y Stephen King, independientemente de su género.

Meta consultas

Las metaconsultas son muy similares a las consultas de taxonomía en su estructura, pero utilizan datos de la metatabla de publicaciones para filtrar las publicaciones. El siguiente código mostrará todos los artículos publicados que tengan una imagen destacada.

$args = array( 'post_type' => 'post', 'meta_query' => array( array( 'key' => '_thumbnail_id', 'value' => '', 'compare' => '!=', ), ), ); $query = new WP_Query( $args );

WordPress almacena el ID de la imagen seleccionada para una publicación usando el _thumbnail_id campo. Entonces, si recuperamos todas las publicaciones donde este valor meta no está vacío, deberíamos terminar con todas las publicaciones que tienen una imagen destacada.

El secreto aquí es cómo usar el comparar propiedad y pegar. Puede usar una multitud de valores que deberían ser familiares de SQL: ‘=’, ‘! = ‘,’> ‘,’> = ‘,’ <',' <= ',' ME GUSTA ',' NO ME GUSTA ',' EN ',' NO EN ',' ENTRE ',' NO ENTRE ',' EXISTE '(de WordPress 3.5 y superior) y' NO EXISTE '(de WordPress 3.5 y superior)

los pegar La propiedad suele ser importante cuando desea comparar números o fechas. Los valores posibles son “NUMERIC”, “BINARY”, “CHAR”, “DATE”, “DATETIME”, “DECIMAL”, “FIGNED”, “TIME”, “UNSIGNED”. Recuerde usar DIGITAL cuando compara números, en la mayoría de los otros casos debería estar bien.

Al igual que con las consultas de taxonomía, puede apilar varios requisitos y luego usar relación parámetro para especificar la relación entre ellos.

$args = array( 'post_type' => 'post', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'mood', 'value' => array( 'happy', 'awesome' ), 'compare' => 'IN', ), array( 'key' => 'income', 'value' => 500, 'compare' => '>', 'type' => 'NUMERIC' ), ), ); $query = new WP_Query( $args );

El ejemplo anterior mostraría mensajes de un registro hipotético donde algo bueno salió mal. Me sentí feliz o increíble o gané más de $ 500 ese día.

Configuraciones de fecha

Las fechas pueden volverse un poco complejas, pero son muy flexibles. los Documentación de WP_Query tiene muchos ejemplos si necesita más información.

Recuperar mensajes de un momento determinado es bastante sencillo. Puedes usar el año, Monthnum, w (semana del año), día y algunos otros parámetros para especificar un tiempo. El siguiente código recuperaría todos los mensajes de marzo de 2013.

$args = array( 'post_type' => 'post', 'year' => 2013, 'month' => 3 ); $query = new WP_Query( $args );

Si desea ingresar rangos de tiempo más complejos, deberá usar consulta_fecha. Esto le permite especificar rangos arbitrarios con bastante facilidad, utilizando un formato de matriz familiar. El siguiente ejemplo, cortesía de Codex, muestra cómo puede recuperar mensajes escritos entre las 9 a. M. Y las 5 p. M. De lunes a viernes.

$args = array( 'post_type' => 'post', 'date_query' => array( array( 'hour' => 9, 'compare' => '>=', ), array( 'hour' => 17, 'compare' => '<=', ), array( 'dayofweek' => array( 2, 6 ), 'compare' => 'BETWEEN', ), ), ); $query = new WP_Query( $args );

Ranking de resultados

El orden en que se presenta una lista es tan importante como los elementos que contiene. Afortunadamente, WordPress nos ofrece la Ordenado por y orden configuraciones. los orden el parámetro es bastante simple, puedes usar ASC o DESC para orden ascendente o descendente.

los Ordenado por el parámetro puede tomar un cierto número de valores: “ninguno”, “ID”, “autor”, “título”, “nombre”, “tipo”, “fecha”, “modificado”, “padre”, “rand”, “comment_count ‘,’ menu_order ‘,’ meta_value ‘,’ meta_value_num ‘,’ post__in ‘. Comando por meta_valor puede ser particularmente útil. En este caso, no olvide especificar el meta_key campo también.

$args = array( 'post_type' => 'painting', 'meta_query' => array( array( 'key' => 'price', 'value' => 50000, 'compare' => '>', 'type' => 'NUMERIC' ), ), 'order_by' => 'meta_value_num', 'meta_key' => 'price' ); $query = new WP_Query( $args );

Este ejemplo toma pinturas valoradas en más de $ 50,000 y las clasifica en orden ascendente de precio. Tenga en cuenta que, dado que el precio se almacena como un número, utilicé meta_valor_num ordenar los resultados, a diferencia de meta_valor que se usaría para cadenas.

Otro comando que merece una mención es publicar. Esta publicar es un parámetro completo, le permite especificar una matriz de ID de publicación para recuperar. De forma predeterminada, WordPress ordena las publicaciones por fecha, el orden que especificó en el publicar no se conserva. Si utiliza publicar como el Ordenado por valor también, WordPress mantendrá el control.

$args = array( 'post_type' => 'post', 'post__in' => array( 23, 441, 12, 322, 34, 33), 'order_by' => 'post__in', ); $query = new WP_Query( $args );

Envoltura

Espero que quede claro a partir de esta introducción a WP_Query que esta es una clase poderosa. Le permite recuperar publicaciones utilizando sus propios criterios de una manera estándar de WP. Echa un vistazo a su Documentación para obtener más información y algunas buenas propiedades y métodos, esta clase ofrece manejar la consulta y el bucle.

WP_Query es parte de lo que hace de WordPress un gran CMS general: la capacidad de recuperar objetos de la base de datos de forma modular y personalizable.

Otras lecturas:

Si tienes alguna pregunta, ¡háznoslo saber en los comentarios!

O inicie la conversación en nuestro Grupo de Facebook para profesionales de WordPress. Encuentre respuestas, comparta consejos y obtenga ayuda de otros expertos en WordPress. ¡Únete a él ahora es gratis!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba