Masterización WP_Query 10 ejemplos útiles

Ahora que aprendimos casi todo sobre el WP_Query Clase, es hora de probar algunos ejemplos. En esta parte, vamos a trabajar en 10 escenarios diferentes para utilizar el WP_Query clase y funciones relacionadas.

Será un ejercicio divertido y espero que sea igualmente educativo. Vamos a empezar!

Un recordatorio rápido sobre la creación de un bucle con WP_Query

Solo para hacer que este artículo sea comprensible por separado de la serie "Mastering WP_Query", debo hacer un nano-tutorial sobre cómo crear bucles de WordPress con el WP_Query clase.

No es diferente a crear un bucle regular, en realidad. Un bucle típico de WordPress es así:

Y creando un bucle con el WP_Query La clase tiene solo unas pocas diferencias:

 'news', 'posts_per_page' => 3); $ my_query = new WP_Query ($ args); if ($ my_query-> have_posts ()) while ($ my_query-> have_posts ()) $ my_query-> the_post (); // Los datos de la publicación van aquí.  // Restablecer los datos '$ post' a la publicación actual en la consulta principal. wp_reset_postdata (); ?>

Veamos la diferencia entre los dos:

  • Establecemos algunos argumentos para nuestra WP_Query ejemplo,
  • Nosotros creamos la instancia WP_Query clase,
  • Agregamos $ my_query-> al comienzo de la have_posts () y el cargo() funciones (por lo que son ahora los métodos de la WP_Query clase),
  • Y restablecemos los datos de $ post para que pueda volver a la consulta principal.

Ahora sabemos cómo crear un bucle con WP_Query y La diferencia entre un bucle regular y un bucle creado con WP_Query. No vamos a crear bucles en todos los ejemplos (por el bien de mantener el tutorial corto y sobre el tema), por lo que puede consultar esta sección si necesita crear un bucle con los ejemplos a continuación..

Ejemplo # 1: Publicaciones de un autor en este año

Supongamos que desea enumerar las publicaciones de un autor específico escritas en el año en curso en una sección especial de "Publicaciones de este año". Una simple combinación de dos WP_Query los parámetros serán suficientes:

 'john', // Recibe sus publicaciones de este año. 'year' => $ current_year); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

Pase esta consulta en un bucle y ya está listo para ir!

Ejemplo # 2: "Últimas publicaciones de esta categoría" (excepto la publicación actual)

Digamos que desea crear un bucle debajo de cada publicación en sus páginas de publicación única, y enumerar las últimas publicaciones de la categoría en la que se encuentra la publicación. Por supuesto, debe excluir la publicación actual en caso de que sea una de las últimas mensajes de esa categoría. Así es como creas la consulta con el 'gato' y 'post__not_in' parámetros:

term_id; // Instalar argumentos. $ args = array (// Obtener publicaciones de la categoría. 'cat' => $ current_post_first_cat_id, // Excluir publicación actual. 'post__not_in' => array ($ current_post_id)); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

Para el bucle, sugiero crear tres o cuatro columnas con miniaturas de publicaciones sobre los títulos de las publicaciones. Se verá muy bien justo debajo de la publicación y antes de la sección de comentarios..

Ejemplo # 3: "Mensajes más populares" ordenados por recuento de comentarios

WordPress no tiene un sistema incorporado de "conteo de visitas", y los complementos que proporcionan esta funcionalidad son famosos por ralentizar el sitio web (porque en cada vista de publicación, los complementos escriben en la base de datos una y otra vez para registrar la vista). cuenta). Sin embargo, hay otro tipo de medida para determinar qué publicaciones son las más "populares": contar los comentarios. Y a diferencia de los recuentos de vistas, los recuentos de comentarios ya están en la base de datos: la WP_Query clase hace que sea muy fácil ordenar publicaciones por cantidad de comentarios:

 'Recuento de comentarios' ); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

¿Ves lo fácil que es esto? Ahora imagine la creación de una plantilla de página personalizada con un bucle ejecutando esta consulta: una página de "Publicaciones más comentadas".

Ejemplo # 4: Una configuración simple del control deslizante

Al utilizar WordPress para crear sitios web corporativos, portafolios o revistas web, los controles deslizantes se han convertido en un estándar industrial "imprescindible". No soy realmente un fanático de los controles deslizantes (creo que es una mala experiencia de usuario) pero la web parece gustarme, así que no puedo simplemente decirles que no a mis clientes mientras hago sitios web para ellos. Si quieren deslizadores, utilizo una consulta simple usando el WP_Query clase:

 'control deslizante', // Obtener una categoría específica de control deslizante. 'category_name' => 'home-slides', // Obtenga todas las diapositivas y no pagine. 'nopaging' => true); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

los 'gato' El argumento se puede usar para recuperar diapositivas de diferentes categorías para que pueda separar los grupos de diapositivas y usar múltiples controles deslizantes en varias páginas. Si va a utilizar un solo control deslizante en su sitio web, puede eliminar esa línea y listo..

Ejemplo # 5: una cita aleatoria en la barra lateral

Si está interesado en la literatura o en la religión, es posible que desee tener algunas de sus citas favoritas en la barra lateral, no es un desperdicio de espacio si usa el área con un propósito. Por lo tanto, si va a incluir una cita aleatoria en su barra lateral en cada vista de página, puede usar el siguiente fragmento de código para crear el tipo de publicación y la siguiente consulta para crear un bucle en su barra lateral:

 'Cotizaciones', 'public' => true); register_post_type ('quotes', $ args);  add_action ('init', 'quote_post_type'); // Instalar argumentos. $ args = array (// Obtener el tipo de psot de "comillas". 'post_type' => 'comillas', // Aleatorizar el orden. 'orderby' => 'rand', // Obtener solo un elemento. 'posts_per_page' = > 1,); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

Una solución fácil y elegante..

Ejemplo # 6: Listado de productos entre un rango de precios

Encontré este ejemplo en Scribu.net y debo decir que podría ser el mejor WP_Query Truco en este tutorial. También es un poco más técnico que los demás, ya que se puede aplicar a un sitio web de comercio electrónico impulsado por WordPress en este contexto.

Aquí está el fragmento de código que utilizará si desea enumerar los elementos de un tipo de publicación de "Producto" personalizado y filtrar los resultados con los campos personalizados de "precio":

 'producto', // Configurar la "meta consulta". 'meta_query' => array (array (// Obtenga el campo personalizado "price". 'key' => 'price', // Establezca los valores de los precios. 'value' => array (100, 200), // Set el operador de comparación. 'compare' => 'ENTRE', // Solo vea los campos numéricos. 'tipo' => 'numérico',)))); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

Un gran saludo a Silviu-Cristian Burca!

Ejemplo # 7: Un código corto para insertar publicaciones dentro de publicaciones

Este es un ejercicio divertido, ¡y también podemos utilizar la API de Shortcode! En este ejemplo, vamos a crear un código corto que puede incrustar una publicación dentro de una publicación. (Apenas me contuve de nombrar el código corto [postcepción].) En el siguiente fragmento de código, creamos una función de código abreviado que nos permite incrustar publicaciones (o cualquier tipo de publicación personalizada) y nos permite elegir si mostrar la publicación completa o solo un extracto:

 'post', 'slug' => ", 'full' => true), $ attributes)); // Argumentos de configuración. $ args = array (// Obtener el tipo de publicación (" publicar "de manera predeterminada). 'post_type' => $ type, // Get post by slug. 'name' => $ slug); // Crear una instancia de nueva consulta. $ my_query = new WP_Query ($ args); // Verificar que tenemos resultados de consulta. if ($ my_query-> have_posts ()) // Comenzar a generar el marcado. $ output = '
'; // Iniciar el bucle sobre los resultados de la consulta. while ($ my_query-> have_posts ()) $ my_query-> the_post (); // Añadir título a la salida. $ salida. = '

'; $ output. = get_the_title (); $ salida. = '

'; // Obtenga la publicación completa si '$ completo' es verdadero; de lo contrario, muestre el extracto de obtención si ('verdadero' === $ completo) // Agregue contenido completo a la salida. $ salida. = '
'; $ output. = get_the_content (); $ salida. = '
'; else // Añadir extracto a la salida. $ salida. = '
'; $ output. = get_the_excerpt (); $ salida. = '… '. __ ('Ver post completo', 'tutsplus'). '»'; $ salida. = '
'; // Finalizar la generación de marcado. $ salida. = '
'; else // Mensaje de salida para que el usuario sepa que no se encontraron publicaciones. $ output = '
'; $ salida. = '

'. __ ('No se encontraron publicaciones.', 'Tutsplus'). '

'; $ salida. = '
'; wp_reset_postdata (); devuelve $ output; add_shortcode ('embed_post', 'tutsplus_embedded_post_shortcode'); ?>

Ejemplo # 8: Lista de publicaciones programadas actuales (con extractos opcionales)

He aquí una idea: ¿por qué no muestra algunos de los "adelantos" de sus próximas publicaciones a sus visitantes? Puede usar la siguiente función para enumerar sus publicaciones programadas con o sin extractos después de los títulos:

 * * Uso sin Extractos: * *  * / function tutsplus_show_drafts ($ show_excerpts = true) // Configura los argumentos. $ args = array ('post_status' => 'future', 'nopaging' => true); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); // Comprueba que tenemos resultados de consulta. if ($ my_query-> have_posts ()) // Comenzar a generar marcas. $ output = '
'; // Iniciar el bucle sobre los resultados de la consulta. while ($ my_query-> have_posts ()) $ my_query-> the_post (); // Título del proyecto de salida y extracto (si está habilitado). $ salida. = '
'; $ salida. = '

'. get_the_title (). '

'; $ output. = get_the_title (); $ salida. = ''; if ($ show_excerpts) $ output. = '
'; $ output. = get_the_excerpt (); $ salida. = '
'; $ salida. = '
'; // Fin de generación de marcado. $ salida. = '
'; else // Hágale saber al usuario que no se encontró nada. $ output = '
'; $ salida. = '

'. __ ('Nada encontrado', 'tutsplus'). '

'; $ salida. = '
'; wp_reset_postdata (); devuelve $ output; ?>

Ejemplo # 9: "Publicar de un año atrás hoy"

Si su blog tiene más de un año y su contenido es atemporal (lo que significa que tanto una persona de 2015 como una de 2025 encontrarán el artículo relevante), agregar una sección "Publicar de un año atrás" podría aumentar sus visitas a la página. Así es como lo haces:

 fecha ('j'), // mes (1 - 12). 'monthnum' => fecha ('n'), // año (menos 1). 'year' => date ('Y') - 1, // Mostrar solo una publicación. 'posts_per_page' => 1); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

Utilice esta consulta para crear un bucle que muestre una sola publicación de antaño.

Ejemplo # 10: Mostrar hijos de la página actual

¿No tiene nada más que títulos de sub-páginas para poner dentro de su página de "Servicios", "Nuestros trabajos" o "Mi cartera"? Tal vez un párrafo de introducción, pero tienes razón, esas páginas están condenadas a ser "marcadores de posición". Aún así, es una buena idea colocar subpáginas allí, tal vez una cuadrícula con miniaturas cuadradas y títulos a continuación. Veamos qué consulta debemos usar al crear una plantilla de página:

 $ current_page_id, // Deshabilitar paginación. 'nopaging' => true); // Instancia una nueva instancia de consulta. $ my_query = new WP_Query ($ args); ?>

Terminando

Espero que hayan disfrutado estos ejemplos tanto como yo mientras los preparaba. Presté especial atención a dar diversos ejemplos para ser divertido y para estimular tu creatividad..

Si pensó en mejores ejemplos mientras leía estos, o si tiene preguntas, no dude en enviar un comentario a continuación. Y si te gustó el artículo, no olvides compartirlo con tus amigos.!

En la siguiente parte, hablaremos de WP_User_Query, una de las clases hermanas de WP_Query. Hasta entonces!