Argumentos WP_Query publicaciones, páginas y tipos de publicaciones

En esta parte de esta serie sobre WP_Query, aprenderás a usar WP_Query para consultar por mensajes, páginas y tipos de mensajes personalizados. Puede consultar publicaciones y páginas específicas o puede ejecutar una consulta para devolver publicaciones de uno o más tipos de publicaciones..

Un resumen de cómo funcionan los argumentos en WP_Query

Antes de comenzar, hagamos un resumen rápido sobre cómo funcionan los argumentos en WP_Query. Cuando codificas WP_Query en sus temas o complementos, debe incluir cuatro elementos principales:

  • Los argumentos para la consulta, utilizando los parámetros que se tratarán en este tutorial.
  • la propia consulta
  • el lazo
  • Terminando: cerrando las etiquetas if y while y restableciendo los datos del post

En la práctica esto se parecerá a lo siguiente:

have_posts ()) // Iniciar el bucle sobre los resultados de la consulta. while ($ consulta-> have_posts ()) $ consulta-> the_post (); // Los contenidos de los resultados de la consulta consultados van aquí.  // Restaura los datos originales de la publicación. wp_reset_postdata (); ?>

Los argumentos son lo que le dice a WordPress qué datos obtener de la base de datos y los que cubriré aquí. Así que todo lo que nos estamos enfocando aquí es la primera parte del código:

$ args = array (// Argumentos para su consulta);

Como puede ver, los argumentos están contenidos en una matriz. Aprenderás cómo codificarlos mientras trabajas en este tutorial..

Codificando tus argumentos

Hay una forma específica de codificar los argumentos en la matriz, que es la siguiente:

$ args = array ('parámetro1' => 'valor', 'parámetro2' => 'valor', 'parámetro3' => 'valor');

Debe incluir los parámetros y sus valores entre comillas simples, usar => Entre ellos, y separarlos con una coma. Si se equivoca, es posible que WordPress no agregue todos sus argumentos a la consulta o que obtenga una pantalla en blanco..

Consultar por mensajes individuales o páginas

Comencemos con el escenario más simple: ejecutar una consulta para encontrar una publicación o página específica.

Consultar por una publicación

Para encontrar una publicación específica (o un conjunto de publicaciones), tiene dos opciones:

  • pag (En t): Usar ID de publicación.
  • nombre (cuerda): Usar posbanda.

Puede usar estos parámetros con cualquier tipo de publicación, incluidas publicaciones, páginas, archivos adjuntos y tipos de publicaciones personalizadas. Por defecto, WordPress consultará la 'enviar' Escriba el tipo y no devuelva las páginas ni los tipos de publicación personalizados: si desea hacer esto, deberá agregar más argumentos o usar un argumento diferente, que veré más adelante en este tutorial..

Entonces, para devolver una publicación específica, usarías uno de estos:

$ args = array ('p' => '32');

o:

$ args = array ('name' => 'post_slug');

Tenga en cuenta que el nombre parámetro toma la posposición como su argumento, no su titulo.

Utilizando la nombre El parámetro facilita la identificación de lo que su consulta obtendrá de la base de datos cuando vuelva a visitar su código en una fecha posterior, pero existe el riesgo de que no funcione si uno de los usuarios de su sitio cambia la posposición. La ID de la entrada no se puede cambiar, por lo que es más seguro.

Consultar por una página

Para consultar una página específica tienes dos opciones de nuevo:

  • page_id (En t): Usar ID de página.
  • Nombre de la página (cuerda): Usa la barra de página.

Por lo tanto, para ejecutar una consulta obteniendo solo una página específica de la base de datos, usaría uno de estos:

$ args = array ('page_id' => '20');

o:

$ args = array ('pagename' => 'page_slug');

Consultar por una publicación de otro tipo

Para ejecutar una consulta para una publicación de otro tipo de publicación, incluido un tipo de publicación personalizada, también usaría tipo de mensaje parámetro. Cubriré esto con un poco más de detalle más adelante en este tutorial, pero en breve, para consultar una sola publicación en el producto tipo de mensaje personalizado, usaría esto:

$ args = array ('p' => '46', 'post_type' => 'product');

O para consultar un archivo adjunto, usaría:

$ args = array ('p' => '46', 'post_type' => 'attachment');

Consultando por páginas infantiles

A veces es posible que necesite recuperar todas las páginas que son secundarias de una página determinada, por ejemplo, si su sitio tiene una estructura de página jerárquica y desea mostrar una lista en cada página de los secundarios de esa página..

Nota: No harías esto con las publicaciones, ya que no son jerárquicas, aunque puedes hacerlo con un tipo de publicación personalizada si es jerárquico.

Tienes tres argumentos que puedes usar para hacer esto:

  • post_parente (En t): Use la ID de página para devolver solo páginas secundarias. Se establece en 0 para devolver solo las entradas de nivel superior.
  • post_parent__in (formación): Utilice una matriz de ID de publicación.
  • post_parent__not_in (formación): Utilice una matriz de ID de publicación.

Echemos un vistazo a cada uno de ellos..

El primero, post_parente, le permite consultar las páginas que son hijos de una página específica. 

Entonces, para encontrar todas las páginas que son hijos de una página dada, usarías esto:

$ args = array ('post_type' => 'page', 'post_parent' => '2');

Tenga en cuenta que tiene que incluir el tipo de mensaje argumento como el tipo de publicación predeterminado que WP_Query busca es enviar.

Llevando esto más lejos, así es como lo usarías para encontrar hijos de la página actual:

$ current_page_id = get_the_ID (); $ args = array ('post_type' => 'page', 'post_parent' => $ current_page_id);

También puede usar este parámetro para identificar las páginas de nivel superior, es decir, aquellas sin un padre:

$ args = array ('post_type' => 'page', 'post_parent' => '0');

Pero, ¿qué pasa si quieres identificar a los niños de varias páginas? Puedes hacer esto también, con la post_parent__in parámetro. Esto toma una serie de ID de publicación.

Entonces, para consultar los hijos de dos de tus páginas, usarías esto:

$ args = array ('post_type' => 'page', 'post_parent__in' => array ('2', '4'));

También puede excluir páginas secundarias de su consulta, usando la post_parent__not_in parámetro:

$ args = array ('post_type' => 'page', 'post_parent__not_in' => array ('2', '4'));

Consultar por múltiples publicaciones

También es común ejecutar una consulta para incluir o excluir varias publicaciones. Tienes dos argumentos que puedes usar para esto:

  • publicar (formación): Usar ID de publicación.
  • post__not_in (formación): Usar ID de publicación.

los publicar argumento se puede utilizar para todos los tipos de publicación y toma una matriz de ID. Entonces, para generar una lista de publicaciones específicas, usarías esto:

$ args = array ('post__in' => array ('36', '52', '246', '354'));

Nota: si usa este argumento para obtener publicaciones, WordPress seguirá obteniendo publicaciones pegajosas, incluso si no están en su lista. Para omitirlos, utiliza la ignore_sticky_posts argumento:

$ args = array ('post__in' => array ('36', '52', '246', '354'), 'ignore_sticky_posts' => 'true');

los post__not_in el argumento funciona de una manera similar, nuevamente tomando una matriz de ID de publicación, pero generará todo lo demás excepto las publicaciones enumeradas. Normalmente lo combinarías con otros argumentos para evitar la salida de una gran lista de publicaciones..

Así que para consultar todas las publicaciones de la producto tipo de publicación, pero excluye algunos

$ args = array ('post_type' => 'product', 'post__not_in' => array ('36', '52', '246', '354'));

Entonces, para combinar esto con uno de nuestros ejemplos anteriores, aquí está cómo consultar para todas las páginas de nivel superior excepto la actual:

$ current_page_ids = array (get_the_ID ()); $ args = array ('post_parent' => '0', 'post__not_in' => $ current_page_ids);

Tenga en cuenta que si también ha registrado un tipo de publicación jerárquica, deberá incluir el tipo de mensaje parámetro en este código para solo consultar las páginas.

Consultar por tipos de correos

En algunos de los ejemplos anteriores he usado el tipo de mensaje Parámetro para identificar mensajes de un determinado tipo. Echemos un vistazo a los argumentos que puedes usar con ese parámetro:

  • enviar: Una publicación.
  • página: Una página.
  • revisión: Una revisión.
  • adjunto archivo: Un adjunto.
  • nav_menu_item: Un elemento del menú de navegación.
  • alguna: Recupera cualquier tipo excepto revisiones y tipos con 'exclude_from_search' ajustado a cierto cuando se registraron.
  • Tipos de mensajes personalizados (por ejemplo,. producto).

Como hemos visto anteriormente, puede utilizar este parámetro con otros argumentos para que su consulta sea más específica..

Entonces, para dar un ejemplo simple, aquí le mostramos cómo buscaría todas las páginas de su sitio:

$ args = array ('post_type' => 'page');

Tipos de correos personalizados

La consulta de un tipo de publicación personalizada es simple: use el nombre que le dio al tipo de publicación cuando lo registra, no El título que se utiliza en los menús de administración. Así que digamos que registraste tus tipos de publicaciones de productos usando register_post_type () como sigue:

función register_product () $ args = array ('name' => __ ('Products', 'tutsplus'), 'singular_name' => __ ('Product', 'tutsplus')); register_post_type ('producto', $ args); 

El valor que utiliza para el tipo de mensaje argumento al consultar productos no es 'Producto' o 'Productos' pero 'producto':

$ args = array ('post_type' => 'product');

Archivos adjuntos

De forma predeterminada, si intenta ejecutar una consulta de archivos adjuntos, no funcionará, ya que WordPress establece el post_status de adjuntos a heredar y WP_Query por defecto a 'post_status' => 'publish' a menos que especifique lo contrario. Así que si quieres consultar los archivos adjuntos, debe incluir la post_status argumento:

$ args = array ('post_type' => 'attachment', 'post_status' => 'inherit');

Tenga en cuenta que también podría utilizar alguna en lugar de heredar.

Resumen

Utilizando WP_Query Crear consultas personalizadas para publicaciones y tipos de publicaciones es algo que hago mucho. Como ha visto en los ejemplos aquí, hay muchas posibilidades:

  • Úselo para consultar las páginas de nivel superior en su sitio..
  • Úselo para consultar publicaciones de un tipo de publicación específica.
  • Úselo para consultar todas las publicaciones excepto las que especifique..
  • Úsalo para consultar a todos los hijos de la página actual..

Hay muchas más posibilidades utilizando los argumentos que se cubren aquí, pero esto debería darle una oportunidad..